<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span id="local-6989586621679613783"></span><span class="hs-pragma">{-# LANGUAGE CPP                 #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE DefaultSignatures   #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE DeriveGeneric       #-}</span><span>
</span><span id="line-4"></span><span class="hs-pragma">{-# LANGUAGE FlexibleContexts    #-}</span><span>
</span><span id="line-5"></span><span class="hs-pragma">{-# LANGUAGE PolyKinds           #-}</span><span>
</span><span id="line-6"></span><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables #-}</span><span>
</span><span id="line-7"></span><span class="hs-pragma">{-# LANGUAGE TypeFamilies        #-}</span><span>
</span><span id="line-8"></span><span class="hs-pragma">{-# LANGUAGE TypeOperators       #-}</span><span class="hs-cpp">
#if __GLASGOW_HASKELL__ &gt;= 711
</span><span class="hs-pragma">{-# LANGUAGE PatternSynonyms     #-}</span><span class="hs-cpp">
#endif
</span><span class="hs-cpp">#if __GLASGOW_HASKELL__ &gt;= 800
</span><span class="hs-pragma">{-# LANGUAGE TypeInType          #-}</span><span class="hs-cpp">
#endif
</span><span class="hs-comment">-- |</span><span>
</span><span id="line-16"></span><span class="hs-comment">--</span><span>
</span><span id="line-17"></span><span class="hs-comment">-- Copyright: (c) 2019 Oleg Grenrus</span><span>
</span><span id="line-18"></span><span class="hs-comment">--</span><span>
</span><span id="line-19"></span><span class="hs-comment">-- Structurally tag binary serialisaton stream.</span><span>
</span><span id="line-20"></span><span class="hs-comment">-- Useful when most 'Binary' instances are 'Generic' derived.</span><span>
</span><span id="line-21"></span><span class="hs-comment">--</span><span>
</span><span id="line-22"></span><span class="hs-comment">-- Say you have a data type</span><span>
</span><span id="line-23"></span><span class="hs-comment">--</span><span>
</span><span id="line-24"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-25"></span><span class="hs-comment">-- data Record = Record</span><span>
</span><span id="line-26"></span><span class="hs-comment">--   { _recordFields  :: HM.HashMap Text (Integer, ByteString)</span><span>
</span><span id="line-27"></span><span class="hs-comment">--   , _recordEnabled :: Bool</span><span>
</span><span id="line-28"></span><span class="hs-comment">--   }</span><span>
</span><span id="line-29"></span><span class="hs-comment">--   deriving (Eq, Show, Generic)</span><span>
</span><span id="line-30"></span><span class="hs-comment">--</span><span>
</span><span id="line-31"></span><span class="hs-comment">-- instance 'Binary' Record</span><span>
</span><span id="line-32"></span><span class="hs-comment">-- instance 'Structured' Record</span><span>
</span><span id="line-33"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-34"></span><span class="hs-comment">--</span><span>
</span><span id="line-35"></span><span class="hs-comment">-- then you can serialise and deserialise @Record@ values with a structure tag by simply</span><span>
</span><span id="line-36"></span><span class="hs-comment">--</span><span>
</span><span id="line-37"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-38"></span><span class="hs-comment">-- 'structuredEncode' record :: 'LBS.ByteString'</span><span>
</span><span id="line-39"></span><span class="hs-comment">-- 'structuredDecode' lbs :: IO Record</span><span>
</span><span id="line-40"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-41"></span><span class="hs-comment">--</span><span>
</span><span id="line-42"></span><span class="hs-comment">-- If structure of @Record@ changes in between, deserialisation will fail early.</span><span>
</span><span id="line-43"></span><span class="hs-comment">--</span><span>
</span><span id="line-44"></span><span class="hs-comment">-- Technically, 'Structured' is not related to 'Binary', and may</span><span>
</span><span id="line-45"></span><span class="hs-comment">-- be useful in other uses.</span><span>
</span><span id="line-46"></span><span class="hs-comment">--</span><span>
</span><span id="line-47"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Distribution.Utils.Structured</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-48"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Encoding and decoding</span></span><span>
</span><span id="line-49"></span><span>    </span><span class="hs-comment">-- | These functions operate like @binary@'s counterparts,</span><span>
</span><span id="line-50"></span><span>    </span><span class="hs-comment">-- but the serialised version has a structure hash in front.</span><span>
</span><span id="line-51"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#structuredEncode"><span class="hs-identifier">structuredEncode</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-52"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#structuredEncodeFile"><span class="hs-identifier">structuredEncodeFile</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-53"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#structuredDecode"><span class="hs-identifier">structuredDecode</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-54"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#structuredDecodeOrFailIO"><span class="hs-identifier">structuredDecodeOrFailIO</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-55"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#structuredDecodeFileOrFail"><span class="hs-identifier">structuredDecodeFileOrFail</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-56"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Structured class</span></span><span>
</span><span id="line-57"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier">structure</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-58"></span><span>    </span><span class="annot"><a href="Distribution.Utils.MD5.html#MD5"><span class="hs-identifier">MD5</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-59"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#structureHash"><span class="hs-identifier">structureHash</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-60"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#structureBuilder"><span class="hs-identifier">structureBuilder</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-61"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#genericStructure"><span class="hs-identifier">genericStructure</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-62"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructured"><span class="hs-identifier">GStructured</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-63"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier">nominalStructure</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-64"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier">containerStructure</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-65"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Structure type</span></span><span>
</span><span id="line-66"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier">Structure</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-67"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeName"><span class="hs-identifier">TypeName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-68"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#ConstructorName"><span class="hs-identifier">ConstructorName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-69"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeVersion"><span class="hs-identifier">TypeVersion</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-70"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#SopStructure"><span class="hs-identifier">SopStructure</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-71"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#hashStructure"><span class="hs-identifier">hashStructure</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-72"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#typeVersion"><span class="hs-identifier">typeVersion</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-73"></span><span>    </span><span class="annot"><a href="Distribution.Utils.Structured.html#typeName"><span class="hs-identifier">typeName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-74"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-75"></span><span>
</span><span id="line-76"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Int.html#"><span class="hs-identifier">Data.Int</span></a></span><span>           </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Int.html#Int16"><span class="hs-identifier">Int16</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Int.html#Int32"><span class="hs-identifier">Int32</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Int.html#Int64"><span class="hs-identifier">Int64</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Int.html#Int8"><span class="hs-identifier">Int8</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-77"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.NonEmpty.html#"><span class="hs-identifier">Data.List.NonEmpty</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#NonEmpty"><span class="hs-identifier">NonEmpty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-78"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#"><span class="hs-identifier">Data.Proxy</span></a></span><span>         </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier">Proxy</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-79"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Ratio.html#"><span class="hs-identifier">Data.Ratio</span></a></span><span>         </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Real.html#Ratio"><span class="hs-identifier">Ratio</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-80"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Word.html#"><span class="hs-identifier">Data.Word</span></a></span><span>          </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Word</span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word16"><span class="hs-identifier">Word16</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word32"><span class="hs-identifier">Word32</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word64"><span class="hs-identifier">Word64</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word8"><span class="hs-identifier">Word8</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-81"></span><span>
</span><span id="line-82"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.State.Strict.html#"><span class="hs-identifier">Control.Monad.Trans.State.Strict</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">State</span></span><span>
</span><span id="line-83"></span><span>
</span><span id="line-84"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Control.Exception.html#"><span class="hs-identifier">Control.Exception</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Exception.html#ErrorCall"><span class="hs-identifier">ErrorCall</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#catch"><span class="hs-identifier">catch</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#evaluate"><span class="hs-identifier">evaluate</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-85"></span><span>
</span><span id="line-86"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#"><span class="hs-identifier">GHC.Generics</span></a></span><span>
</span><span id="line-87"></span><span>
</span><span id="line-88"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.html#"><span class="hs-identifier">Data.ByteString</span></a></span><span>              </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">BS</span></span><span>
</span><span id="line-89"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Lazy.html#"><span class="hs-identifier">Data.ByteString.Lazy</span></a></span><span>         </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">LBS</span></span><span class="hs-cpp">
#if MIN_VERSION_bytestring(0,10,4)
</span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Builder.html#"><span class="hs-identifier">Data.ByteString.Builder</span></a></span><span>      </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Builder</span></span><span class="hs-cpp">
#else
</span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.ByteString.Lazy.Builder</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Builder</span><span class="hs-cpp">
#endif
</span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.IntMap.html#"><span class="hs-identifier">Data.IntMap</span></a></span><span>                  </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">IM</span></span><span>
</span><span id="line-96"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.IntSet.html#"><span class="hs-identifier">Data.IntSet</span></a></span><span>                  </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">IS</span></span><span>
</span><span id="line-97"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.html#"><span class="hs-identifier">Data.Map</span></a></span><span>                     </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Map</span></span><span>
</span><span id="line-98"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.Sequence.html#"><span class="hs-identifier">Data.Sequence</span></a></span><span>                </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Seq</span></span><span>
</span><span id="line-99"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.Set.html#"><span class="hs-identifier">Data.Set</span></a></span><span>                     </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Set</span></span><span>
</span><span id="line-100"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../text/src/Data.Text.html#"><span class="hs-identifier">Data.Text</span></a></span><span>                    </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">T</span></span><span>
</span><span id="line-101"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../text/src/Data.Text.Lazy.html#"><span class="hs-identifier">Data.Text.Lazy</span></a></span><span>               </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">LT</span></span><span>
</span><span id="line-102"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../time/src/Data.Time.html#"><span class="hs-identifier">Data.Time</span></a></span><span>                    </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Time</span></span><span>
</span><span id="line-103"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="Distribution.Compat.Binary.html"><span class="hs-identifier">Distribution.Compat.Binary</span></a></span><span>   </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Binary</span></span><span class="hs-cpp">

#ifdef MIN_VERSION_aeson
</span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data.Aeson</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Aeson</span><span class="hs-cpp">
#endif
</span><span class="hs-cpp">
#if __GLASGOW_HASKELL__ &gt;= 800
</span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Kind.html#"><span class="hs-identifier">Data.Kind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Type</span></span><span class="hs-special">)</span><span class="hs-cpp">
#else
</span><span class="hs-cpp">#define Type *
</span><span class="hs-cpp">#endif
</span><span>
</span><span id="line-115"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Compat.Typeable.html"><span class="hs-identifier">Distribution.Compat.Typeable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Typeable.Internal.html#Typeable"><span class="hs-identifier">Typeable</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier">TypeRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.html#typeRep"><span class="hs-identifier">typeRep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-116"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Utils.MD5.html"><span class="hs-identifier">Distribution.Utils.MD5</span></a></span><span>
</span><span id="line-117"></span><span>
</span><span id="line-118"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Monoid.html#"><span class="hs-identifier">Data.Monoid</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#mconcat"><span class="hs-identifier">mconcat</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-119"></span><span>
</span><span id="line-120"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../base/src/Data.Semigroup.html#"><span class="hs-identifier">Data.Semigroup</span></a></span><span>
</span><span id="line-121"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../base/src/Data.Foldable.html#"><span class="hs-identifier">Data.Foldable</span></a></span><span class="hs-cpp">

#if !MIN_VERSION_base(4,8,0)
</span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Applicative</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">pure</span><span class="hs-special">)</span><span>
</span><span id="line-125"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Traversable</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">traverse</span><span class="hs-special">)</span><span class="hs-cpp">
#endif
</span><span class="hs-cpp">
#if !MIN_VERSION_base(4,7,0)
</span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Typeable</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">Typeable1</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">typeOf1</span><span class="hs-special">)</span><span class="hs-cpp">
#endif
</span><span>
</span><span id="line-132"></span><span>
</span><span id="line-133"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-134"></span><span class="hs-comment">-- Types</span><span>
</span><span id="line-135"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-136"></span><span>
</span><span id="line-137"></span><span class="hs-keyword">type</span><span> </span><span id="TypeName"><span class="annot"><a href="Distribution.Utils.Structured.html#TypeName"><span class="hs-identifier hs-var">TypeName</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-138"></span><span class="hs-keyword">type</span><span> </span><span id="ConstructorName"><span class="annot"><a href="Distribution.Utils.Structured.html#ConstructorName"><span class="hs-identifier hs-var">ConstructorName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-139"></span><span>
</span><span id="line-140"></span><span class="hs-comment">-- | A sematic version of a data type. Usually 0.</span><span>
</span><span id="line-141"></span><span class="hs-keyword">type</span><span> </span><span id="TypeVersion"><span class="annot"><a href="Distribution.Utils.Structured.html#TypeVersion"><span class="hs-identifier hs-var">TypeVersion</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word32"><span class="hs-identifier hs-type">Word32</span></a></span><span>
</span><span id="line-142"></span><span>
</span><span id="line-143"></span><span class="hs-comment">-- | Structure of a datatype.</span><span>
</span><span id="line-144"></span><span class="hs-comment">--</span><span>
</span><span id="line-145"></span><span class="hs-comment">-- It can be infinite, as far as 'TypeRep's involved are finite.</span><span>
</span><span id="line-146"></span><span class="hs-comment">-- (e.g. polymorphic recursion might cause troubles).</span><span>
</span><span id="line-147"></span><span class="hs-comment">--</span><span>
</span><span id="line-148"></span><span id="local-6989586621679613715"><span id="local-6989586621679613716"></span></span><span class="hs-keyword">data</span><span> </span><span id="Structure"><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-var">Structure</span></a></span></span><span>
</span><span id="line-149"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span id="Nominal"><span class="annot"><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span></span><span>   </span><span class="hs-glyph">!</span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeVersion"><span class="hs-identifier hs-type">TypeVersion</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeName"><span class="hs-identifier hs-type">TypeName</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span class="hs-special">]</span><span>  </span><span class="hs-comment">-- ^ nominal, yet can be parametrised by other structures.</span><span>
</span><span id="line-150"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="Newtype"><span class="annot"><a href="Distribution.Utils.Structured.html#Newtype"><span class="hs-identifier hs-var">Newtype</span></a></span></span><span>   </span><span class="hs-glyph">!</span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeVersion"><span class="hs-identifier hs-type">TypeVersion</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeName"><span class="hs-identifier hs-type">TypeName</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span>    </span><span class="hs-comment">-- ^ a newtype wrapper</span><span>
</span><span id="line-151"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span id="Structure"><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-var">Structure</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeVersion"><span class="hs-identifier hs-type">TypeVersion</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeName"><span class="hs-identifier hs-type">TypeName</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#SopStructure"><span class="hs-identifier hs-type">SopStructure</span></a></span><span> </span><span class="hs-comment">-- ^ sum-of-products structure</span><span>
</span><span id="line-152"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679613691"><span id="local-6989586621679613710"><span class="annot"><span class="annottext">Structure -&gt; Structure -&gt; Bool
(Structure -&gt; Structure -&gt; Bool)
-&gt; (Structure -&gt; Structure -&gt; Bool) -&gt; Eq Structure
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: Structure -&gt; Structure -&gt; Bool
$c/= :: Structure -&gt; Structure -&gt; Bool
== :: Structure -&gt; Structure -&gt; Bool
$c== :: Structure -&gt; Structure -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679613639"><span id="local-6989586621679613641"><span id="local-6989586621679613644"><span id="local-6989586621679613647"><span id="local-6989586621679613650"><span id="local-6989586621679613666"><span id="local-6989586621679613684"><span class="annot"><span class="annottext">Eq Structure
Eq Structure
-&gt; (Structure -&gt; Structure -&gt; Ordering)
-&gt; (Structure -&gt; Structure -&gt; Bool)
-&gt; (Structure -&gt; Structure -&gt; Bool)
-&gt; (Structure -&gt; Structure -&gt; Bool)
-&gt; (Structure -&gt; Structure -&gt; Bool)
-&gt; (Structure -&gt; Structure -&gt; Structure)
-&gt; (Structure -&gt; Structure -&gt; Structure)
-&gt; Ord Structure
Structure -&gt; Structure -&gt; Bool
Structure -&gt; Structure -&gt; Ordering
Structure -&gt; Structure -&gt; Structure
forall a.
Eq a
-&gt; (a -&gt; a -&gt; Ordering)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; a)
-&gt; (a -&gt; a -&gt; a)
-&gt; Ord a
min :: Structure -&gt; Structure -&gt; Structure
$cmin :: Structure -&gt; Structure -&gt; Structure
max :: Structure -&gt; Structure -&gt; Structure
$cmax :: Structure -&gt; Structure -&gt; Structure
&gt;= :: Structure -&gt; Structure -&gt; Bool
$c&gt;= :: Structure -&gt; Structure -&gt; Bool
&gt; :: Structure -&gt; Structure -&gt; Bool
$c&gt; :: Structure -&gt; Structure -&gt; Bool
&lt;= :: Structure -&gt; Structure -&gt; Bool
$c&lt;= :: Structure -&gt; Structure -&gt; Bool
&lt; :: Structure -&gt; Structure -&gt; Bool
$c&lt; :: Structure -&gt; Structure -&gt; Bool
compare :: Structure -&gt; Structure -&gt; Ordering
$ccompare :: Structure -&gt; Structure -&gt; Ordering
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679613610"><span id="local-6989586621679613612"><span id="local-6989586621679613635"><span class="annot"><span class="annottext">Int -&gt; Structure -&gt; ShowS
[Structure] -&gt; ShowS
Structure -&gt; String
(Int -&gt; Structure -&gt; ShowS)
-&gt; (Structure -&gt; String)
-&gt; ([Structure] -&gt; ShowS)
-&gt; Show Structure
forall a.
(Int -&gt; a -&gt; ShowS) -&gt; (a -&gt; String) -&gt; ([a] -&gt; ShowS) -&gt; Show a
showList :: [Structure] -&gt; ShowS
$cshowList :: [Structure] -&gt; ShowS
show :: Structure -&gt; String
$cshow :: Structure -&gt; String
showsPrec :: Int -&gt; Structure -&gt; ShowS
$cshowsPrec :: Int -&gt; Structure -&gt; ShowS
</span><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Show</span></a></span></span></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">(forall x. Structure -&gt; Rep Structure x)
-&gt; (forall x. Rep Structure x -&gt; Structure) -&gt; Generic Structure
forall x. Rep Structure x -&gt; Structure
forall x. Structure -&gt; Rep Structure x
forall a.
(forall x. a -&gt; Rep a x) -&gt; (forall x. Rep a x -&gt; a) -&gt; Generic a
$cto :: forall x. Rep Structure x -&gt; Structure
$cfrom :: forall x. Structure -&gt; Rep Structure x
</span><a href="../../base/src/GHC.Generics.html#Generic"><span class="hs-identifier hs-var hs-var hs-var hs-var">Generic</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-153"></span><span>
</span><span id="line-154"></span><span class="hs-keyword">type</span><span> </span><span id="SopStructure"><span class="annot"><a href="Distribution.Utils.Structured.html#SopStructure"><span class="hs-identifier hs-var">SopStructure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#ConstructorName"><span class="hs-identifier hs-type">ConstructorName</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-155"></span><span>
</span><span id="line-156"></span><span class="hs-comment">-- | A MD5 hash digest of 'Structure'.</span><span>
</span><span id="line-157"></span><span class="annot"><a href="Distribution.Utils.Structured.html#hashStructure"><span class="hs-identifier hs-type">hashStructure</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.MD5.html#MD5"><span class="hs-identifier hs-type">MD5</span></a></span><span>
</span><span id="line-158"></span><span id="hashStructure"><span class="annot"><span class="annottext">hashStructure :: Structure -&gt; MD5
</span><a href="Distribution.Utils.Structured.html#hashStructure"><span class="hs-identifier hs-var hs-var">hashStructure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; MD5
</span><a href="Distribution.Utils.MD5.html#md5"><span class="hs-identifier hs-var">md5</span></a></span><span> </span><span class="annot"><span class="annottext">(ByteString -&gt; MD5)
-&gt; (Structure -&gt; ByteString) -&gt; Structure -&gt; MD5
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; ByteString
</span><a href="../../bytestring/src/Data.ByteString.Lazy.html#toStrict"><span class="hs-identifier hs-var">LBS.toStrict</span></a></span><span> </span><span class="annot"><span class="annottext">(ByteString -&gt; ByteString)
-&gt; (Structure -&gt; ByteString) -&gt; Structure -&gt; ByteString
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Builder -&gt; ByteString
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#toLazyByteString"><span class="hs-identifier hs-var">Builder.toLazyByteString</span></a></span><span> </span><span class="annot"><span class="annottext">(Builder -&gt; ByteString)
-&gt; (Structure -&gt; Builder) -&gt; Structure -&gt; ByteString
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Structure -&gt; Builder
</span><a href="Distribution.Utils.Structured.html#structureBuilder"><span class="hs-identifier hs-var">structureBuilder</span></a></span><span>
</span><span id="line-159"></span><span>
</span><span id="line-160"></span><span class="hs-comment">-- | A van-Laarhoven lens into 'TypeVersion' of 'Structure'</span><span>
</span><span id="line-161"></span><span class="hs-comment">--</span><span>
</span><span id="line-162"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-163"></span><span class="hs-comment">-- 'typeVersion' :: Lens' 'Structure' 'TypeVersion'</span><span>
</span><span id="line-164"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-165"></span><span id="local-6989586621679614477"><span class="annot"><a href="Distribution.Utils.Structured.html#typeVersion"><span class="hs-identifier hs-type">typeVersion</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#Functor"><span class="hs-identifier hs-type">Functor</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614477"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeVersion"><span class="hs-identifier hs-type">TypeVersion</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679614477"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeVersion"><span class="hs-identifier hs-type">TypeVersion</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679614477"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span></span><span>
</span><span id="line-166"></span><span id="typeVersion"><span class="annot"><span class="annottext">typeVersion :: forall (f :: * -&gt; *).
Functor f =&gt;
(Word32 -&gt; f Word32) -&gt; Structure -&gt; f Structure
</span><a href="Distribution.Utils.Structured.html#typeVersion"><span class="hs-identifier hs-var hs-var">typeVersion</span></a></span></span><span> </span><span id="local-6989586621679613594"><span class="annot"><span class="annottext">Word32 -&gt; f Word32
</span><a href="#local-6989586621679613594"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-type">Nominal</span></a></span><span>   </span><span id="local-6989586621679613593"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613593"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613592"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613592"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613591"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613591"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613590"><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613590"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Word32 -&gt; Structure) -&gt; f Word32 -&gt; f Structure
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679613589"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613589"><span class="hs-identifier hs-var">v'</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; [Structure] -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span>   </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613593"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613589"><span class="hs-identifier hs-var">v'</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613591"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613590"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word32 -&gt; f Word32
</span><a href="#local-6989586621679613594"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613592"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-167"></span><span class="annot"><a href="Distribution.Utils.Structured.html#typeVersion"><span class="hs-identifier hs-var">typeVersion</span></a></span><span> </span><span id="local-6989586621679613588"><span class="annot"><span class="annottext">Word32 -&gt; f Word32
</span><a href="#local-6989586621679613588"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Newtype"><span class="hs-identifier hs-type">Newtype</span></a></span><span>   </span><span id="local-6989586621679613587"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613587"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613586"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613586"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613585"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613585"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613584"><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613584"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Word32 -&gt; Structure) -&gt; f Word32 -&gt; f Structure
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679613583"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613583"><span class="hs-identifier hs-var">v'</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; Structure -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Newtype"><span class="hs-identifier hs-var">Newtype</span></a></span><span>   </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613587"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613583"><span class="hs-identifier hs-var">v'</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613585"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613584"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word32 -&gt; f Word32
</span><a href="#local-6989586621679613588"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613586"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-168"></span><span class="annot"><a href="Distribution.Utils.Structured.html#typeVersion"><span class="hs-identifier hs-var">typeVersion</span></a></span><span> </span><span id="local-6989586621679613582"><span class="annot"><span class="annottext">Word32 -&gt; f Word32
</span><a href="#local-6989586621679613582"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span> </span><span id="local-6989586621679613581"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613581"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613580"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613580"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613579"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613579"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613578"><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613578"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Word32 -&gt; Structure) -&gt; f Word32 -&gt; f Structure
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679613577"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613577"><span class="hs-identifier hs-var">v'</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; SopStructure -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-var">Structure</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613581"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613577"><span class="hs-identifier hs-var">v'</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613579"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613578"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word32 -&gt; f Word32
</span><a href="#local-6989586621679613582"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613580"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-169"></span><span>
</span><span id="line-170"></span><span class="hs-comment">-- | A van-Laarhoven lens into 'TypeName' of 'Structure'</span><span>
</span><span id="line-171"></span><span class="hs-comment">--</span><span>
</span><span id="line-172"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-173"></span><span class="hs-comment">-- 'typeName' :: Lens' 'Structure' 'TypeName'</span><span>
</span><span id="line-174"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-175"></span><span id="local-6989586621679614472"><span class="annot"><a href="Distribution.Utils.Structured.html#typeName"><span class="hs-identifier hs-type">typeName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#Functor"><span class="hs-identifier hs-type">Functor</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614472"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeName"><span class="hs-identifier hs-type">TypeName</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679614472"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeName"><span class="hs-identifier hs-type">TypeName</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679614472"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span></span><span>
</span><span id="line-176"></span><span id="typeName"><span class="annot"><span class="annottext">typeName :: forall (f :: * -&gt; *).
Functor f =&gt;
(String -&gt; f String) -&gt; Structure -&gt; f Structure
</span><a href="Distribution.Utils.Structured.html#typeName"><span class="hs-identifier hs-var hs-var">typeName</span></a></span></span><span> </span><span id="local-6989586621679613572"><span class="annot"><span class="annottext">String -&gt; f String
</span><a href="#local-6989586621679613572"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-type">Nominal</span></a></span><span>   </span><span id="local-6989586621679613571"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613571"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613570"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613570"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613569"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613569"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613568"><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613568"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(String -&gt; Structure) -&gt; f String -&gt; f Structure
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679613567"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613567"><span class="hs-identifier hs-var">n'</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; [Structure] -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span>   </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613571"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613570"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613567"><span class="hs-identifier hs-var">n'</span></a></span><span> </span><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613568"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; f String
</span><a href="#local-6989586621679613572"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613569"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-177"></span><span class="annot"><a href="Distribution.Utils.Structured.html#typeName"><span class="hs-identifier hs-var">typeName</span></a></span><span> </span><span id="local-6989586621679613566"><span class="annot"><span class="annottext">String -&gt; f String
</span><a href="#local-6989586621679613566"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Newtype"><span class="hs-identifier hs-type">Newtype</span></a></span><span>   </span><span id="local-6989586621679613565"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613565"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613564"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613564"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613563"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613563"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613562"><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613562"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(String -&gt; Structure) -&gt; f String -&gt; f Structure
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679613561"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613561"><span class="hs-identifier hs-var">n'</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; Structure -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Newtype"><span class="hs-identifier hs-var">Newtype</span></a></span><span>   </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613565"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613564"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613561"><span class="hs-identifier hs-var">n'</span></a></span><span> </span><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613562"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; f String
</span><a href="#local-6989586621679613566"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613563"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-178"></span><span class="annot"><a href="Distribution.Utils.Structured.html#typeName"><span class="hs-identifier hs-var">typeName</span></a></span><span> </span><span id="local-6989586621679613560"><span class="annot"><span class="annottext">String -&gt; f String
</span><a href="#local-6989586621679613560"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span> </span><span id="local-6989586621679613559"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613559"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613558"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613558"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613557"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613557"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613556"><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613556"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(String -&gt; Structure) -&gt; f String -&gt; f Structure
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679613555"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613555"><span class="hs-identifier hs-var">n'</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; SopStructure -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-var">Structure</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613559"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613558"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613555"><span class="hs-identifier hs-var">n'</span></a></span><span> </span><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613556"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; f String
</span><a href="#local-6989586621679613560"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613557"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-179"></span><span>
</span><span id="line-180"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-181"></span><span class="hs-comment">-- Builder</span><span>
</span><span id="line-182"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-183"></span><span>
</span><span id="line-184"></span><span class="hs-comment">-- | Flatten 'Structure' into something we can calculate hash of.</span><span>
</span><span id="line-185"></span><span class="hs-comment">--</span><span>
</span><span id="line-186"></span><span class="hs-comment">-- As 'Structure' can be potentially infinite. For mutually recursive types,</span><span>
</span><span id="line-187"></span><span class="hs-comment">-- we keep track of 'TypeRep's, and put just 'TypeRep' name when it's occurred</span><span>
</span><span id="line-188"></span><span class="hs-comment">-- another time.</span><span>
</span><span id="line-189"></span><span class="annot"><a href="Distribution.Utils.Structured.html#structureBuilder"><span class="hs-identifier hs-type">structureBuilder</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Builder.Internal.html#Builder"><span class="hs-identifier hs-type">Builder.Builder</span></a></span><span>
</span><span id="line-190"></span><span id="structureBuilder"><span class="annot"><span class="annottext">structureBuilder :: Structure -&gt; Builder
</span><a href="Distribution.Utils.Structured.html#structureBuilder"><span class="hs-identifier hs-var hs-var">structureBuilder</span></a></span></span><span> </span><span id="local-6989586621679613554"><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613554"><span class="hs-identifier hs-var">s0</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">State (Map String (NonEmpty TypeRep)) Builder
-&gt; Map String (NonEmpty TypeRep) -&gt; Builder
forall s a. State s a -&gt; s -&gt; a
</span><a href="../../transformers/src/Control.Monad.Trans.State.Strict.html#evalState"><span class="hs-identifier hs-var">State.evalState</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Structure -&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613552"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613554"><span class="hs-identifier hs-var">s0</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
forall k a. Map k a
</span><a href="../../containers/src/Data.Map.Internal.html#empty"><span class="hs-identifier hs-var">Map.empty</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-191"></span><span>    </span><span class="annot"><a href="#local-6989586621679613552"><span class="hs-identifier hs-type">go</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.State.Strict.html#State"><span class="hs-identifier hs-type">State.State</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#NonEmpty"><span class="hs-identifier hs-type">NonEmpty</span></a></span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Builder.Internal.html#Builder"><span class="hs-identifier hs-type">Builder.Builder</span></a></span><span>
</span><span id="line-192"></span><span>    </span><span id="local-6989586621679613552"><span class="annot"><span class="annottext">go :: Structure -&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613552"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-type">Nominal</span></a></span><span>   </span><span id="local-6989586621679613550"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613550"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613549"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613549"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613548"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613548"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613547"><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613547"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep
-&gt; State (Map String (NonEmpty TypeRep)) Builder
-&gt; State (Map String (NonEmpty TypeRep)) Builder
forall {m :: * -&gt; *}.
Monad m =&gt;
TypeRep
-&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
-&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
</span><a href="#local-6989586621679613546"><span class="hs-identifier hs-var">withTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613550"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">(State (Map String (NonEmpty TypeRep)) Builder
 -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; State (Map String (NonEmpty TypeRep)) Builder
-&gt; State (Map String (NonEmpty TypeRep)) Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-193"></span><span>        </span><span id="local-6989586621679613545"><span class="annot"><span class="annottext">[Builder]
</span><a href="#local-6989586621679613545"><span class="hs-identifier hs-var">s'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Structure -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; [Structure]
-&gt; StateT (Map String (NonEmpty TypeRep)) Identity [Builder]
forall (t :: * -&gt; *) (f :: * -&gt; *) a b.
(Traversable t, Applicative f) =&gt;
(a -&gt; f b) -&gt; t a -&gt; f (t b)
</span><a href="../../base/src/Data.Traversable.html#traverse"><span class="hs-identifier hs-var">traverse</span></a></span><span> </span><span class="annot"><span class="annottext">Structure -&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613552"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613547"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-194"></span><span>        </span><span class="annot"><span class="annottext">Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[Builder] -&gt; Builder
forall a. Monoid a =&gt; [a] -&gt; a
</span><a href="../../base/src/GHC.Base.html#mconcat"><span class="hs-identifier hs-var">mconcat</span></a></span><span> </span><span class="annot"><span class="annottext">([Builder] -&gt; Builder) -&gt; [Builder] -&gt; Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Word8 -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#word8"><span class="hs-identifier hs-var">Builder.word8</span></a></span><span> </span><span class="annot"><span class="annottext">Word8
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">Builder -&gt; [Builder] -&gt; [Builder]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Word32 -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#word32LE"><span class="hs-identifier hs-var">Builder.word32LE</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613549"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">Builder -&gt; [Builder] -&gt; [Builder]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span>  </span><span class="annot"><span class="annottext">String -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#stringUtf8"><span class="hs-identifier hs-var">Builder.stringUtf8</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613548"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Builder -&gt; [Builder] -&gt; [Builder]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Builder]
</span><a href="#local-6989586621679613545"><span class="hs-identifier hs-var">s'</span></a></span><span>
</span><span id="line-195"></span><span>
</span><span id="line-196"></span><span>    </span><span class="annot"><a href="#local-6989586621679613552"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Newtype"><span class="hs-identifier hs-type">Newtype</span></a></span><span>   </span><span id="local-6989586621679613540"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613540"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613539"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613539"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613538"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613538"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613537"><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613537"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep
-&gt; State (Map String (NonEmpty TypeRep)) Builder
-&gt; State (Map String (NonEmpty TypeRep)) Builder
forall {m :: * -&gt; *}.
Monad m =&gt;
TypeRep
-&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
-&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
</span><a href="#local-6989586621679613546"><span class="hs-identifier hs-var">withTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613540"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">(State (Map String (NonEmpty TypeRep)) Builder
 -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; State (Map String (NonEmpty TypeRep)) Builder
-&gt; State (Map String (NonEmpty TypeRep)) Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-197"></span><span>        </span><span id="local-6989586621679613536"><span class="annot"><span class="annottext">Builder
</span><a href="#local-6989586621679613536"><span class="hs-identifier hs-var">s'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Structure -&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613552"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613537"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-198"></span><span>        </span><span class="annot"><span class="annottext">Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[Builder] -&gt; Builder
forall a. Monoid a =&gt; [a] -&gt; a
</span><a href="../../base/src/GHC.Base.html#mconcat"><span class="hs-identifier hs-var">mconcat</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Word8 -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#word8"><span class="hs-identifier hs-var">Builder.word8</span></a></span><span> </span><span class="annot"><span class="annottext">Word8
</span><span class="hs-number">2</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Word32 -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#word32LE"><span class="hs-identifier hs-var">Builder.word32LE</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613539"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#stringUtf8"><span class="hs-identifier hs-var">Builder.stringUtf8</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613538"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Builder
</span><a href="#local-6989586621679613536"><span class="hs-identifier hs-var">s'</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-199"></span><span>
</span><span id="line-200"></span><span>    </span><span class="annot"><a href="#local-6989586621679613552"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span> </span><span id="local-6989586621679613535"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613535"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613534"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613534"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621679613533"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613533"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679613532"><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613532"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep
-&gt; State (Map String (NonEmpty TypeRep)) Builder
-&gt; State (Map String (NonEmpty TypeRep)) Builder
forall {m :: * -&gt; *}.
Monad m =&gt;
TypeRep
-&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
-&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
</span><a href="#local-6989586621679613546"><span class="hs-identifier hs-var">withTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613535"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">(State (Map String (NonEmpty TypeRep)) Builder
 -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; State (Map String (NonEmpty TypeRep)) Builder
-&gt; State (Map String (NonEmpty TypeRep)) Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-201"></span><span>        </span><span id="local-6989586621679613531"><span class="annot"><span class="annottext">Builder
</span><a href="#local-6989586621679613531"><span class="hs-identifier hs-var">s'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">SopStructure -&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613530"><span class="hs-identifier hs-var">goSop</span></a></span><span> </span><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613532"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-202"></span><span>        </span><span class="annot"><span class="annottext">Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[Builder] -&gt; Builder
forall a. Monoid a =&gt; [a] -&gt; a
</span><a href="../../base/src/GHC.Base.html#mconcat"><span class="hs-identifier hs-var">mconcat</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Word8 -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#word8"><span class="hs-identifier hs-var">Builder.word8</span></a></span><span> </span><span class="annot"><span class="annottext">Word8
</span><span class="hs-number">3</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Word32 -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#word32LE"><span class="hs-identifier hs-var">Builder.word32LE</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613534"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#stringUtf8"><span class="hs-identifier hs-var">Builder.stringUtf8</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613533"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Builder
</span><a href="#local-6989586621679613531"><span class="hs-identifier hs-var">s'</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-203"></span><span>
</span><span id="line-204"></span><span>    </span><span id="local-6989586621679613546"><span class="annot"><span class="annottext">withTypeRep :: TypeRep
-&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
-&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
</span><a href="#local-6989586621679613546"><span class="hs-identifier hs-var hs-var">withTypeRep</span></a></span></span><span> </span><span id="local-6989586621679613519"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613519"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621679613518"><span class="annot"><span class="annottext">StateT (Map String (NonEmpty TypeRep)) m Builder
</span><a href="#local-6989586621679613518"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-205"></span><span>        </span><span id="local-6989586621679613517"><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
</span><a href="#local-6989586621679613517"><span class="hs-identifier hs-var">acc</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">StateT
  (Map String (NonEmpty TypeRep)) m (Map String (NonEmpty TypeRep))
forall (m :: * -&gt; *) s. Monad m =&gt; StateT s m s
</span><a href="../../transformers/src/Control.Monad.Trans.State.Strict.html#get"><span class="hs-identifier hs-var">State.get</span></a></span><span>
</span><span id="line-206"></span><span>        </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">TypeRep
-&gt; Map String (NonEmpty TypeRep)
-&gt; Maybe (Map String (NonEmpty TypeRep))
</span><a href="#local-6989586621679613515"><span class="hs-identifier hs-var">insert</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613519"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
</span><a href="#local-6989586621679613517"><span class="hs-identifier hs-var">acc</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-207"></span><span>            </span><span class="annot"><span class="annottext">Maybe (Map String (NonEmpty TypeRep))
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Builder -&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Builder -&gt; StateT (Map String (NonEmpty TypeRep)) m Builder)
-&gt; Builder -&gt; StateT (Map String (NonEmpty TypeRep)) m Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[Builder] -&gt; Builder
forall a. Monoid a =&gt; [a] -&gt; a
</span><a href="../../base/src/GHC.Base.html#mconcat"><span class="hs-identifier hs-var">mconcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Word8 -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#word8"><span class="hs-identifier hs-var">Builder.word8</span></a></span><span> </span><span class="annot"><span class="annottext">Word8
</span><span class="hs-number">0</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#stringUtf8"><span class="hs-identifier hs-var">Builder.stringUtf8</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613519"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-208"></span><span>            </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621679613513"><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
</span><a href="#local-6989586621679613513"><span class="hs-identifier hs-var">acc'</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-209"></span><span>                </span><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
-&gt; StateT (Map String (NonEmpty TypeRep)) m ()
forall (m :: * -&gt; *) s. Monad m =&gt; s -&gt; StateT s m ()
</span><a href="../../transformers/src/Control.Monad.Trans.State.Strict.html#put"><span class="hs-identifier hs-var">State.put</span></a></span><span> </span><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
</span><a href="#local-6989586621679613513"><span class="hs-identifier hs-var">acc'</span></a></span><span>
</span><span id="line-210"></span><span>                </span><span class="annot"><span class="annottext">StateT (Map String (NonEmpty TypeRep)) m Builder
</span><a href="#local-6989586621679613518"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span>
</span><span id="line-211"></span><span>
</span><span id="line-212"></span><span>    </span><span class="annot"><a href="#local-6989586621679613530"><span class="hs-identifier hs-type">goSop</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#SopStructure"><span class="hs-identifier hs-type">SopStructure</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.State.Strict.html#State"><span class="hs-identifier hs-type">State.State</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#NonEmpty"><span class="hs-identifier hs-type">NonEmpty</span></a></span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Builder.Internal.html#Builder"><span class="hs-identifier hs-type">Builder.Builder</span></a></span><span>
</span><span id="line-213"></span><span>    </span><span id="local-6989586621679613530"><span class="annot"><span class="annottext">goSop :: SopStructure -&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613530"><span class="hs-identifier hs-var hs-var">goSop</span></a></span></span><span> </span><span id="local-6989586621679613511"><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613511"><span class="hs-identifier hs-var">sop</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-214"></span><span>        </span><span id="local-6989586621679613510"><span class="annot"><span class="annottext">[Builder]
</span><a href="#local-6989586621679613510"><span class="hs-identifier hs-var">parts</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">((String, [Structure])
 -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; SopStructure
-&gt; StateT (Map String (NonEmpty TypeRep)) Identity [Builder]
forall (t :: * -&gt; *) (f :: * -&gt; *) a b.
(Traversable t, Applicative f) =&gt;
(a -&gt; f b) -&gt; t a -&gt; f (t b)
</span><a href="../../base/src/Data.Traversable.html#traverse"><span class="hs-identifier hs-var">traverse</span></a></span><span> </span><span class="annot"><span class="annottext">(String, [Structure])
-&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613509"><span class="hs-identifier hs-var">part</span></a></span><span> </span><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613511"><span class="hs-identifier hs-var">sop</span></a></span><span>
</span><span id="line-215"></span><span>        </span><span class="annot"><span class="annottext">Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[Builder] -&gt; Builder
forall a. Monoid a =&gt; [a] -&gt; a
</span><a href="../../base/src/GHC.Base.html#mconcat"><span class="hs-identifier hs-var">mconcat</span></a></span><span> </span><span class="annot"><span class="annottext">[Builder]
</span><a href="#local-6989586621679613510"><span class="hs-identifier hs-var">parts</span></a></span><span>
</span><span id="line-216"></span><span>
</span><span id="line-217"></span><span>    </span><span id="local-6989586621679613509"><span class="annot"><span class="annottext">part :: (String, [Structure])
-&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613509"><span class="hs-identifier hs-var hs-var">part</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679613500"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613500"><span class="hs-identifier hs-var">cn</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679613499"><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613499"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-218"></span><span>        </span><span id="local-6989586621679613498"><span class="annot"><span class="annottext">[Builder]
</span><a href="#local-6989586621679613498"><span class="hs-identifier hs-var">s'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Structure -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; [Structure]
-&gt; StateT (Map String (NonEmpty TypeRep)) Identity [Builder]
forall (t :: * -&gt; *) (f :: * -&gt; *) a b.
(Traversable t, Applicative f) =&gt;
(a -&gt; f b) -&gt; t a -&gt; f (t b)
</span><a href="../../base/src/Data.Traversable.html#traverse"><span class="hs-identifier hs-var">traverse</span></a></span><span> </span><span class="annot"><span class="annottext">Structure -&gt; State (Map String (NonEmpty TypeRep)) Builder
</span><a href="#local-6989586621679613552"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613499"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-219"></span><span>        </span><span class="annot"><span class="annottext">Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder)
-&gt; Builder -&gt; State (Map String (NonEmpty TypeRep)) Builder
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[Builder] -&gt; Builder
forall a. Monoid a =&gt; [a] -&gt; a
</span><a href="../../base/src/GHC.Base.html#mconcat"><span class="hs-identifier hs-var">Data.Monoid.mconcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; Builder
</span><a href="../../bytestring/src/Data.ByteString.Builder.html#stringUtf8"><span class="hs-identifier hs-var">Builder.stringUtf8</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613500"><span class="hs-identifier hs-var">cn</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Builder] -&gt; Builder
forall a. Monoid a =&gt; [a] -&gt; a
</span><a href="../../base/src/GHC.Base.html#mconcat"><span class="hs-identifier hs-var">mconcat</span></a></span><span> </span><span class="annot"><span class="annottext">[Builder]
</span><a href="#local-6989586621679613498"><span class="hs-identifier hs-var">s'</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-220"></span><span>
</span><span id="line-221"></span><span>    </span><span class="annot"><a href="#local-6989586621679613515"><span class="hs-identifier hs-type">insert</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#NonEmpty"><span class="hs-identifier hs-type">NonEmpty</span></a></span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#NonEmpty"><span class="hs-identifier hs-type">NonEmpty</span></a></span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-222"></span><span>    </span><span id="local-6989586621679613515"><span class="annot"><span class="annottext">insert :: TypeRep
-&gt; Map String (NonEmpty TypeRep)
-&gt; Maybe (Map String (NonEmpty TypeRep))
</span><a href="#local-6989586621679613515"><span class="hs-identifier hs-var hs-var">insert</span></a></span></span><span> </span><span id="local-6989586621679613497"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613497"><span class="hs-identifier hs-var">tr</span></a></span></span><span> </span><span id="local-6989586621679613496"><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
</span><a href="#local-6989586621679613496"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">String -&gt; Map String (NonEmpty TypeRep) -&gt; Maybe (NonEmpty TypeRep)
forall k a. Ord k =&gt; k -&gt; Map k a -&gt; Maybe a
</span><a href="../../containers/src/Data.Map.Internal.html#lookup"><span class="hs-identifier hs-var">Map.lookup</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613494"><span class="hs-identifier hs-var">trShown</span></a></span><span> </span><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
</span><a href="#local-6989586621679613496"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-223"></span><span>        </span><span class="annot"><span class="annottext">Maybe (NonEmpty TypeRep)
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>                              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe (Map String (NonEmpty TypeRep))
</span><a href="#local-6989586621679613493"><span class="hs-identifier hs-var">inserted</span></a></span><span>
</span><span id="line-224"></span><span>        </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621679613492"><span class="annot"><span class="annottext">NonEmpty TypeRep
</span><a href="#local-6989586621679613492"><span class="hs-identifier hs-var">ne</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613497"><span class="hs-identifier hs-var">tr</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; NonEmpty TypeRep -&gt; Bool
forall (t :: * -&gt; *) a. (Foldable t, Eq a) =&gt; a -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#elem"><span class="hs-operator hs-var">`Data.Foldable.elem`</span></a></span><span> </span><span class="annot"><span class="annottext">NonEmpty TypeRep
</span><a href="#local-6989586621679613492"><span class="hs-identifier hs-var">ne</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe (Map String (NonEmpty TypeRep))
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-225"></span><span>                </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe (Map String (NonEmpty TypeRep))
</span><a href="#local-6989586621679613493"><span class="hs-identifier hs-var">inserted</span></a></span><span>
</span><span id="line-226"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-227"></span><span>        </span><span id="local-6989586621679613493"><span class="annot"><span class="annottext">inserted :: Maybe (Map String (NonEmpty TypeRep))
</span><a href="#local-6989586621679613493"><span class="hs-identifier hs-var hs-var">inserted</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
-&gt; Maybe (Map String (NonEmpty TypeRep))
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(NonEmpty TypeRep -&gt; NonEmpty TypeRep -&gt; NonEmpty TypeRep)
-&gt; String
-&gt; NonEmpty TypeRep
-&gt; Map String (NonEmpty TypeRep)
-&gt; Map String (NonEmpty TypeRep)
forall k a. Ord k =&gt; (a -&gt; a -&gt; a) -&gt; k -&gt; a -&gt; Map k a -&gt; Map k a
</span><a href="../../containers/src/Data.Map.Internal.html#insertWith"><span class="hs-identifier hs-var">Map.insertWith</span></a></span><span> </span><span class="annot"><span class="annottext">NonEmpty TypeRep -&gt; NonEmpty TypeRep -&gt; NonEmpty TypeRep
forall a. Semigroup a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Base.html#%3C%3E"><span class="hs-operator hs-var">(Data.Semigroup.&lt;&gt;)</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613494"><span class="hs-identifier hs-var">trShown</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep -&gt; NonEmpty TypeRep
forall (f :: * -&gt; *) a. Applicative f =&gt; a -&gt; f a
</span><a href="../../base/src/GHC.Base.html#pure"><span class="hs-identifier hs-var">pure</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613497"><span class="hs-identifier hs-var">tr</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Map String (NonEmpty TypeRep)
</span><a href="#local-6989586621679613496"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-228"></span><span>        </span><span id="local-6989586621679613494"><span class="annot"><span class="annottext">trShown :: String
</span><a href="#local-6989586621679613494"><span class="hs-identifier hs-var hs-var">trShown</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613497"><span class="hs-identifier hs-var">tr</span></a></span><span>
</span><span id="line-229"></span><span>
</span><span id="line-230"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-231"></span><span class="hs-comment">-- Classes</span><span>
</span><span id="line-232"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-233"></span><span>
</span><span id="line-234"></span><span class="hs-comment">-- | Class of types with a known 'Structure'.</span><span>
</span><span id="line-235"></span><span class="hs-comment">--</span><span>
</span><span id="line-236"></span><span class="hs-comment">-- For regular data types 'Structured' can be derived generically.</span><span>
</span><span id="line-237"></span><span class="hs-comment">--</span><span>
</span><span id="line-238"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-239"></span><span class="hs-comment">-- data Record = Record { a :: Int, b :: Bool, c :: [Char] } deriving ('Generic')</span><span>
</span><span id="line-240"></span><span class="hs-comment">-- instance 'Structured' Record</span><span>
</span><span id="line-241"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-242"></span><span class="hs-comment">--</span><span>
</span><span id="line-243"></span><span class="hs-comment">-- @since 3.2.0.0</span><span>
</span><span id="line-244"></span><span class="hs-comment">--</span><span>
</span><span id="line-245"></span><span class="hs-keyword">class</span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614440"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span id="Structured"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-var">Structured</span></a></span></span><span> </span><span id="local-6989586621679614440"><span class="annot"><a href="#local-6989586621679614440"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-246"></span><span>    </span><span id="structure"><span class="annot"><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier hs-type">structure</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614440"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span>
</span><span id="line-247"></span><span>    </span><span class="hs-keyword">default</span><span> </span><span id="structure"><span class="annot"><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier hs-type">structure</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Generics.html#Generic"><span class="hs-identifier hs-type">Generic</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614440"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructured"><span class="hs-identifier hs-type">GStructured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Generics.html#Rep"><span class="hs-identifier hs-type">Rep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614440"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614440"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span>
</span><span id="line-248"></span><span>    </span><span id="local-6989586621679613488"><span class="annot"><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier hs-var hs-var">structure</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy a -&gt; Structure
forall a.
(Typeable a, Generic a, GStructured (Rep a)) =&gt;
Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#genericStructure"><span class="hs-identifier hs-var">genericStructure</span></a></span></span><span>
</span><span id="line-249"></span><span>
</span><span id="line-250"></span><span>    </span><span class="hs-comment">-- This member is hidden. It's there to precalc</span><span>
</span><span id="line-251"></span><span>    </span><span id="structureHash%27"><span class="annot"><a href="Distribution.Utils.Structured.html#structureHash%27"><span class="hs-identifier hs-type">structureHash'</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Tagged"><span class="hs-identifier hs-type">Tagged</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614440"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.MD5.html#MD5"><span class="hs-identifier hs-type">MD5</span></a></span><span>
</span><span id="line-252"></span><span>    </span><span id="local-6989586621679613479"><span class="annot"><a href="Distribution.Utils.Structured.html#structureHash%27"><span class="hs-identifier hs-var hs-var">structureHash'</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MD5 -&gt; Tagged a MD5
forall {k} (a :: k) b. b -&gt; Tagged a b
</span><a href="Distribution.Utils.Structured.html#Tagged"><span class="hs-identifier hs-var">Tagged</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Structure -&gt; MD5
</span><a href="Distribution.Utils.Structured.html#hashStructure"><span class="hs-identifier hs-var">hashStructure</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy a -&gt; Structure
forall a. Structured a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier hs-var">structure</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy a
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614440"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span></span><span>
</span><span id="line-253"></span><span>
</span><span id="line-254"></span><span class="hs-comment">-- private Tagged</span><span>
</span><span id="line-255"></span><span class="hs-keyword">newtype</span><span> </span><span id="Tagged"><span class="annot"><a href="Distribution.Utils.Structured.html#Tagged"><span class="hs-identifier hs-var">Tagged</span></a></span></span><span> </span><span id="local-6989586621679614434"><span class="annot"><a href="#local-6989586621679614434"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span id="local-6989586621679614435"><span class="annot"><a href="#local-6989586621679614435"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="Tagged"><span class="annot"><a href="Distribution.Utils.Structured.html#Tagged"><span class="hs-identifier hs-var">Tagged</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="untag"><span class="annot"><span class="annottext">forall {k} (a :: k) b. Tagged a b -&gt; b
</span><a href="Distribution.Utils.Structured.html#untag"><span class="hs-identifier hs-var hs-var">untag</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679614435"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-256"></span><span>
</span><span id="line-257"></span><span class="hs-comment">-- | Semantically @'hashStructure' . 'structure'@.</span><span>
</span><span id="line-258"></span><span class="annot"><a href="Distribution.Utils.Structured.html#structureHash"><span class="hs-identifier hs-type">structureHash</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679614428"><span class="annot"><a href="#local-6989586621679614428"><span class="hs-identifier hs-type">a</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614428"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614428"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.MD5.html#MD5"><span class="hs-identifier hs-type">MD5</span></a></span><span>
</span><span id="line-259"></span><span id="structureHash"><span class="annot"><span class="annottext">structureHash :: forall a. Structured a =&gt; Proxy a -&gt; MD5
</span><a href="Distribution.Utils.Structured.html#structureHash"><span class="hs-identifier hs-var hs-var">structureHash</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tagged a MD5 -&gt; MD5
forall {k} (a :: k) b. Tagged a b -&gt; b
</span><a href="Distribution.Utils.Structured.html#untag"><span class="hs-identifier hs-var hs-var">untag</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Tagged a MD5
forall a. Structured a =&gt; Tagged a MD5
</span><a href="Distribution.Utils.Structured.html#structureHash%27"><span class="hs-identifier hs-var">structureHash'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Tagged"><span class="hs-identifier hs-type">Tagged</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614428"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.MD5.html#MD5"><span class="hs-identifier hs-type">MD5</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-260"></span><span>
</span><span id="line-261"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-262"></span><span class="hs-comment">-- Functions</span><span>
</span><span id="line-263"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-264"></span><span>
</span><span id="line-265"></span><span class="hs-comment">-- | Structured 'Binary.encode'.</span><span>
</span><span id="line-266"></span><span class="hs-comment">-- Encode a value to using binary serialisation to a lazy 'LBS.ByteString'.</span><span>
</span><span id="line-267"></span><span class="hs-comment">-- Encoding starts with 16 byte large structure hash.</span><span>
</span><span id="line-268"></span><span class="annot"><a href="Distribution.Utils.Structured.html#structuredEncode"><span class="hs-identifier hs-type">structuredEncode</span></a></span><span>
</span><span id="line-269"></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679614426"><span class="annot"><a href="#local-6989586621679614426"><span class="hs-identifier hs-type">a</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../binary/src/Data.Binary.Class.html#Binary"><span class="hs-identifier hs-type">Binary.Binary</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614426"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614426"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-270"></span><span>  </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679614426"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Lazy.Internal.html#ByteString"><span class="hs-identifier hs-type">LBS.ByteString</span></a></span><span>
</span><span id="line-271"></span><span id="structuredEncode"><span class="annot"><span class="annottext">structuredEncode :: forall a. (Binary a, Structured a) =&gt; a -&gt; ByteString
</span><a href="Distribution.Utils.Structured.html#structuredEncode"><span class="hs-identifier hs-var hs-var">structuredEncode</span></a></span></span><span> </span><span id="local-6989586621679613467"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679613467"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Tag a, a) -&gt; ByteString
forall a. Binary a =&gt; a -&gt; ByteString
</span><a href="../../binary/src/Data.Binary.html#encode"><span class="hs-identifier hs-var">Binary.encode</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Tag a
forall {k} (a :: k). Tag a
</span><a href="Distribution.Utils.Structured.html#Tag"><span class="hs-identifier hs-var">Tag</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Tag"><span class="hs-identifier hs-type">Tag</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614426"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679613467"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-272"></span><span>
</span><span id="line-273"></span><span class="hs-comment">-- | Lazily serialise a value to a file</span><span>
</span><span id="line-274"></span><span id="local-6989586621679614418"><span class="annot"><a href="Distribution.Utils.Structured.html#structuredEncodeFile"><span class="hs-identifier hs-type">structuredEncodeFile</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../binary/src/Data.Binary.Class.html#Binary"><span class="hs-identifier hs-type">Binary.Binary</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614418"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614418"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679614418"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span><span>
</span><span id="line-275"></span><span id="structuredEncodeFile"><span class="annot"><span class="annottext">structuredEncodeFile :: forall a. (Binary a, Structured a) =&gt; String -&gt; a -&gt; IO ()
</span><a href="Distribution.Utils.Structured.html#structuredEncodeFile"><span class="hs-identifier hs-var hs-var">structuredEncodeFile</span></a></span></span><span> </span><span id="local-6989586621679613459"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613459"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; ByteString -&gt; IO ()
</span><a href="../../bytestring/src/Data.ByteString.Lazy.html#writeFile"><span class="hs-identifier hs-var">LBS.writeFile</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613459"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">(ByteString -&gt; IO ()) -&gt; (a -&gt; ByteString) -&gt; a -&gt; IO ()
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; ByteString
forall a. (Binary a, Structured a) =&gt; a -&gt; ByteString
</span><a href="Distribution.Utils.Structured.html#structuredEncode"><span class="hs-identifier hs-var">structuredEncode</span></a></span><span>
</span><span id="line-276"></span><span>
</span><span id="line-277"></span><span class="hs-comment">-- | Structured 'Binary.decode'.</span><span>
</span><span id="line-278"></span><span class="hs-comment">-- Decode a value from a lazy 'LBS.ByteString', reconstructing the original structure.</span><span>
</span><span id="line-279"></span><span class="hs-comment">-- Throws pure exception on invalid inputs.</span><span>
</span><span id="line-280"></span><span class="annot"><a href="Distribution.Utils.Structured.html#structuredDecode"><span class="hs-identifier hs-type">structuredDecode</span></a></span><span>
</span><span id="line-281"></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679614416"><span class="annot"><a href="#local-6989586621679614416"><span class="hs-identifier hs-type">a</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../binary/src/Data.Binary.Class.html#Binary"><span class="hs-identifier hs-type">Binary.Binary</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614416"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614416"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-282"></span><span>  </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Lazy.Internal.html#ByteString"><span class="hs-identifier hs-type">LBS.ByteString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679614416"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-283"></span><span id="structuredDecode"><span class="annot"><span class="annottext">structuredDecode :: forall a. (Binary a, Structured a) =&gt; ByteString -&gt; a
</span><a href="Distribution.Utils.Structured.html#structuredDecode"><span class="hs-identifier hs-var hs-var">structuredDecode</span></a></span></span><span> </span><span id="local-6989586621679613453"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621679613453"><span class="hs-identifier hs-var">lbs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Tag a, a) -&gt; a
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -&gt; (Tag a, a)
forall a. Binary a =&gt; ByteString -&gt; a
</span><a href="../../binary/src/Data.Binary.html#decode"><span class="hs-identifier hs-var">Binary.decode</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621679613453"><span class="hs-identifier hs-var">lbs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Tag"><span class="hs-identifier hs-type">Tag</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614416"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614416"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-284"></span><span>
</span><span id="line-285"></span><span id="local-6989586621679614411"><span class="annot"><a href="Distribution.Utils.Structured.html#structuredDecodeOrFailIO"><span class="hs-identifier hs-type">structuredDecodeOrFailIO</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../binary/src/Data.Binary.Class.html#Binary"><span class="hs-identifier hs-type">Binary.Binary</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614411"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614411"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Lazy.Internal.html#ByteString"><span class="hs-identifier hs-type">LBS.ByteString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Either"><span class="hs-identifier hs-type">Either</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614411"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-286"></span><span id="structuredDecodeOrFailIO"><span class="annot"><span class="annottext">structuredDecodeOrFailIO :: forall a.
(Binary a, Structured a) =&gt;
ByteString -&gt; IO (Either String a)
</span><a href="Distribution.Utils.Structured.html#structuredDecodeOrFailIO"><span class="hs-identifier hs-var hs-var">structuredDecodeOrFailIO</span></a></span></span><span> </span><span id="local-6989586621679613441"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621679613441"><span class="hs-identifier hs-var">bs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-287"></span><span>    </span><span class="annot"><span class="annottext">IO (Either String a)
-&gt; (ErrorCall -&gt; IO (Either String a)) -&gt; IO (Either String a)
forall e a. Exception e =&gt; IO a -&gt; (e -&gt; IO a) -&gt; IO a
</span><a href="../../base/src/GHC.IO.html#catch"><span class="hs-identifier hs-var">catch</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a -&gt; IO a
forall a. a -&gt; IO a
</span><a href="../../base/src/GHC.IO.html#evaluate"><span class="hs-identifier hs-var">evaluate</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -&gt; a
forall a. (Binary a, Structured a) =&gt; ByteString -&gt; a
</span><a href="Distribution.Utils.Structured.html#structuredDecode"><span class="hs-identifier hs-var">structuredDecode</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621679613441"><span class="hs-identifier hs-var">bs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">IO a -&gt; (a -&gt; IO (Either String a)) -&gt; IO (Either String a)
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b
</span><a href="../../base/src/GHC.Base.html#%3E%3E%3D"><span class="hs-operator hs-var">&gt;&gt;=</span></a></span><span> </span><span class="annot"><span class="annottext">Either String a -&gt; IO (Either String a)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Either String a -&gt; IO (Either String a))
-&gt; (a -&gt; Either String a) -&gt; a -&gt; IO (Either String a)
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; Either String a
forall a b. b -&gt; Either a b
</span><a href="../../base/src/Data.Either.html#Right"><span class="hs-identifier hs-var">Right</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ErrorCall -&gt; IO (Either String a)
forall {m :: * -&gt; *} {b}.
Monad m =&gt;
ErrorCall -&gt; m (Either String b)
</span><a href="#local-6989586621679613440"><span class="hs-identifier hs-var">handler</span></a></span><span>
</span><span id="line-288"></span><span>  </span><span class="hs-keyword">where</span><span class="hs-cpp">
#if MIN_VERSION_base(4,9,0)
</span><span>    </span><span id="local-6989586621679613440"><span class="annot"><span class="annottext">handler :: ErrorCall -&gt; m (Either String b)
</span><a href="#local-6989586621679613440"><span class="hs-identifier hs-var hs-var">handler</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Exception.html#ErrorCallWithLocation"><span class="hs-identifier hs-type">ErrorCallWithLocation</span></a></span><span> </span><span id="local-6989586621679613436"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613436"><span class="hs-identifier hs-var">str</span></a></span></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Either String b -&gt; m (Either String b)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Either String b -&gt; m (Either String b))
-&gt; Either String b -&gt; m (Either String b)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; Either String b
forall a b. a -&gt; Either a b
</span><a href="../../base/src/Data.Either.html#Left"><span class="hs-identifier hs-var">Left</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613436"><span class="hs-identifier hs-var">str</span></a></span><span class="hs-cpp">
#else
</span><span>    </span><span class="hs-identifier">handler</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">ErrorCall</span><span> </span><span class="hs-identifier">str</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">return</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">Left</span><span> </span><span class="hs-identifier">str</span><span class="hs-cpp">
#endif
</span><span>
</span><span id="line-295"></span><span class="hs-comment">-- | Lazily reconstruct a value previously written to a file.</span><span>
</span><span id="line-296"></span><span id="local-6989586621679614398"><span class="annot"><a href="Distribution.Utils.Structured.html#structuredDecodeFileOrFail"><span class="hs-identifier hs-type">structuredDecodeFileOrFail</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../binary/src/Data.Binary.Class.html#Binary"><span class="hs-identifier hs-type">Binary.Binary</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614398"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614398"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Either"><span class="hs-identifier hs-type">Either</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614398"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-297"></span><span id="structuredDecodeFileOrFail"><span class="annot"><span class="annottext">structuredDecodeFileOrFail :: forall a.
(Binary a, Structured a) =&gt;
String -&gt; IO (Either String a)
</span><a href="Distribution.Utils.Structured.html#structuredDecodeFileOrFail"><span class="hs-identifier hs-var hs-var">structuredDecodeFileOrFail</span></a></span></span><span> </span><span id="local-6989586621679613430"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613430"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; IO (Either String a)
forall a.
(Binary a, Structured a) =&gt;
ByteString -&gt; IO (Either String a)
</span><a href="Distribution.Utils.Structured.html#structuredDecodeOrFailIO"><span class="hs-identifier hs-var">structuredDecodeOrFailIO</span></a></span><span> </span><span class="annot"><span class="annottext">(ByteString -&gt; IO (Either String a))
-&gt; IO ByteString -&gt; IO (Either String a)
forall (m :: * -&gt; *) a b. Monad m =&gt; (a -&gt; m b) -&gt; m a -&gt; m b
</span><a href="../../base/src/GHC.Base.html#%3D%3C%3C"><span class="hs-operator hs-var">=&lt;&lt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; IO ByteString
</span><a href="../../bytestring/src/Data.ByteString.Lazy.html#readFile"><span class="hs-identifier hs-var">LBS.readFile</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613430"><span class="hs-identifier hs-var">f</span></a></span><span>
</span><span id="line-298"></span><span>
</span><span id="line-299"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-300"></span><span class="hs-comment">-- Helper data</span><span>
</span><span id="line-301"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-302"></span><span>
</span><span id="line-303"></span><span class="hs-keyword">data</span><span> </span><span id="Tag"><span class="annot"><a href="Distribution.Utils.Structured.html#Tag"><span class="hs-identifier hs-var">Tag</span></a></span></span><span> </span><span id="local-6989586621679614419"><span class="annot"><a href="#local-6989586621679614419"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="Tag"><span class="annot"><a href="Distribution.Utils.Structured.html#Tag"><span class="hs-identifier hs-var">Tag</span></a></span></span><span>
</span><span id="line-304"></span><span>
</span><span id="line-305"></span><span id="local-6989586621679614422"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613424"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614422"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../binary/src/Data.Binary.Class.html#Binary"><span class="hs-identifier hs-type">Binary.Binary</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Tag"><span class="hs-identifier hs-type">Tag</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614422"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-306"></span><span>    </span><span id="local-6989586621679613412"><span class="annot"><span class="annottext">get :: Get (Tag a)
</span><a href="../../binary/src/Data.Binary.Class.html#get"><span class="hs-identifier hs-var hs-var hs-var hs-var">get</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-307"></span><span>        </span><span id="local-6989586621679613410"><span class="annot"><span class="annottext">MD5
</span><a href="#local-6989586621679613410"><span class="hs-identifier hs-var">actual</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Get MD5
</span><a href="Distribution.Utils.MD5.html#binaryGetMD5"><span class="hs-identifier hs-var">binaryGetMD5</span></a></span><span>
</span><span id="line-308"></span><span>        </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">MD5
</span><a href="#local-6989586621679613410"><span class="hs-identifier hs-var">actual</span></a></span><span> </span><span class="annot"><span class="annottext">MD5 -&gt; MD5 -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">MD5
</span><a href="#local-6989586621679613408"><span class="hs-identifier hs-var">expected</span></a></span><span>
</span><span id="line-309"></span><span>        </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">Tag a -&gt; Get (Tag a)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">Tag a
forall {k} (a :: k). Tag a
</span><a href="Distribution.Utils.Structured.html#Tag"><span class="hs-identifier hs-var">Tag</span></a></span><span>
</span><span id="line-310"></span><span>        </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">String -&gt; Get (Tag a)
forall (m :: * -&gt; *) a. MonadFail m =&gt; String -&gt; m a
</span><a href="../../base/src/Control.Monad.Fail.html#fail"><span class="hs-identifier hs-var">fail</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; Get (Tag a)) -&gt; String -&gt; Get (Tag a)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[String] -&gt; String
forall (t :: * -&gt; *) a. Foldable t =&gt; t [a] -&gt; [a]
</span><a href="../../base/src/Data.Foldable.html#concat"><span class="hs-identifier hs-var">concat</span></a></span><span>
</span><span id="line-311"></span><span>            </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Non-matching structured hashes: &quot;</span></span><span>
</span><span id="line-312"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">MD5 -&gt; String
</span><a href="Distribution.Utils.MD5.html#showMD5"><span class="hs-identifier hs-var">showMD5</span></a></span><span> </span><span class="annot"><span class="annottext">MD5
</span><a href="#local-6989586621679613410"><span class="hs-identifier hs-var">actual</span></a></span><span>
</span><span id="line-313"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;; expected: &quot;</span></span><span>
</span><span id="line-314"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">MD5 -&gt; String
</span><a href="Distribution.Utils.MD5.html#showMD5"><span class="hs-identifier hs-var">showMD5</span></a></span><span> </span><span class="annot"><span class="annottext">MD5
</span><a href="#local-6989586621679613408"><span class="hs-identifier hs-var">expected</span></a></span><span>
</span><span id="line-315"></span><span>            </span><span class="hs-special">]</span><span>
</span><span id="line-316"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-317"></span><span>        </span><span id="local-6989586621679613408"><span class="annot"><span class="annottext">expected :: MD5
</span><a href="#local-6989586621679613408"><span class="hs-identifier hs-var hs-var">expected</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tagged a MD5 -&gt; MD5
forall {k} (a :: k) b. Tagged a b -&gt; b
</span><a href="Distribution.Utils.Structured.html#untag"><span class="hs-identifier hs-var hs-var">untag</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Tagged a MD5
forall a. Structured a =&gt; Tagged a MD5
</span><a href="Distribution.Utils.Structured.html#structureHash%27"><span class="hs-identifier hs-var">structureHash'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Tagged"><span class="hs-identifier hs-type">Tagged</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614422"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.MD5.html#MD5"><span class="hs-identifier hs-type">MD5</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-318"></span><span>
</span><span id="line-319"></span><span>    </span><span id="local-6989586621679613404"><span class="annot"><span class="annottext">put :: Tag a -&gt; Put
</span><a href="../../binary/src/Data.Binary.Class.html#put"><span class="hs-identifier hs-var hs-var hs-var hs-var">put</span></a></span></span><span> </span><span class="annot"><span class="annottext">Tag a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MD5 -&gt; Put
</span><a href="Distribution.Utils.MD5.html#binaryPutMD5"><span class="hs-identifier hs-var">binaryPutMD5</span></a></span><span> </span><span class="annot"><span class="annottext">MD5
</span><a href="#local-6989586621679613401"><span class="hs-identifier hs-var">expected</span></a></span><span>
</span><span id="line-320"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-321"></span><span>        </span><span id="local-6989586621679613401"><span class="annot"><span class="annottext">expected :: MD5
</span><a href="#local-6989586621679613401"><span class="hs-identifier hs-var hs-var">expected</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tagged a MD5 -&gt; MD5
forall {k} (a :: k) b. Tagged a b -&gt; b
</span><a href="Distribution.Utils.Structured.html#untag"><span class="hs-identifier hs-var hs-var">untag</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Tagged a MD5
forall a. Structured a =&gt; Tagged a MD5
</span><a href="Distribution.Utils.Structured.html#structureHash%27"><span class="hs-identifier hs-var">structureHash'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Tagged"><span class="hs-identifier hs-type">Tagged</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614422"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="Distribution.Utils.MD5.html#MD5"><span class="hs-identifier hs-type">MD5</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-322"></span><span>
</span><span id="line-323"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-324"></span><span class="hs-comment">-- Smart constructors</span><span>
</span><span id="line-325"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-326"></span><span>
</span><span id="line-327"></span><span class="hs-comment">-- | Use 'Typeable' to infer name</span><span>
</span><span id="line-328"></span><span id="local-6989586621679614385"><span class="annot"><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-type">nominalStructure</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614385"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614385"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span></span><span>
</span><span id="line-329"></span><span id="nominalStructure"><span class="annot"><span class="annottext">nominalStructure :: forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var hs-var">nominalStructure</span></a></span></span><span> </span><span id="local-6989586621679613395"><span class="annot"><span class="annottext">Proxy a
</span><a href="#local-6989586621679613395"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; [Structure] -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613394"><span class="hs-identifier hs-var">tr</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613394"><span class="hs-identifier hs-var">tr</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-330"></span><span>    </span><span id="local-6989586621679613394"><span class="annot"><span class="annottext">tr :: TypeRep
</span><a href="#local-6989586621679613394"><span class="hs-identifier hs-var hs-var">tr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy a -&gt; TypeRep
forall {k} (proxy :: k -&gt; *) (a :: k).
Typeable a =&gt;
proxy a -&gt; TypeRep
</span><a href="../../base/src/Data.Typeable.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy a
</span><a href="#local-6989586621679613395"><span class="hs-identifier hs-var">p</span></a></span><span class="hs-cpp">

#if MIN_VERSION_base(4,7,0)
</span><span class="annot"><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier hs-type">containerStructure</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679614378"><span class="annot"><a href="#local-6989586621679614378"><span class="hs-identifier hs-type">f</span></a></span></span><span> </span><span id="local-6989586621679614377"><span class="annot"><a href="#local-6989586621679614377"><span class="hs-identifier hs-type">a</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614378"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614377"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614378"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614377"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span>
</span><span id="line-334"></span><span id="containerStructure"><span class="annot"><span class="annottext">containerStructure :: forall {k} (f :: * -&gt; k) a.
(Typeable f, Structured a) =&gt;
Proxy (f a) -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier hs-var hs-var">containerStructure</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy (f a)
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; [Structure] -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613385"><span class="hs-identifier hs-var">faTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613384"><span class="hs-identifier hs-var">fTypeRep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-335"></span><span>    </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Proxy a -&gt; Structure
forall a. Structured a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier hs-var">structure</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy a
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614377"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-336"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-337"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-338"></span><span>    </span><span id="local-6989586621679613384"><span class="annot"><span class="annottext">fTypeRep :: TypeRep
</span><a href="#local-6989586621679613384"><span class="hs-identifier hs-var hs-var">fTypeRep</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy f -&gt; TypeRep
forall {k} (proxy :: k -&gt; *) (a :: k).
Typeable a =&gt;
proxy a -&gt; TypeRep
</span><a href="../../base/src/Data.Typeable.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy f
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614378"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-339"></span><span>    </span><span id="local-6989586621679613385"><span class="annot"><span class="annottext">faTypeRep :: TypeRep
</span><a href="#local-6989586621679613385"><span class="hs-identifier hs-var hs-var">faTypeRep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy (f a) -&gt; TypeRep
forall {k} (proxy :: k -&gt; *) (a :: k).
Typeable a =&gt;
proxy a -&gt; TypeRep
</span><a href="../../base/src/Data.Typeable.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy (f a)
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614378"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614377"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-cpp">

#else
</span><span class="hs-identifier">containerStructure</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-identifier">f</span><span> </span><span class="hs-identifier">a</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">Typeable1</span><span> </span><span class="hs-identifier">f</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">Structured</span><span> </span><span class="hs-identifier">a</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier">Proxy</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">f</span><span> </span><span class="hs-identifier">a</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Structure</span><span>
</span><span id="line-343"></span><span class="hs-identifier">containerStructure</span><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">Nominal</span><span> </span><span class="hs-identifier">faTypeRep</span><span> </span><span class="hs-number">0</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">show</span><span> </span><span class="hs-identifier">fTypeRep</span><span class="hs-special">)</span><span>
</span><span id="line-344"></span><span>    </span><span class="hs-special">[</span><span> </span><span class="hs-identifier">structure</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">Proxy</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Proxy</span><span> </span><span class="hs-identifier">a</span><span class="hs-special">)</span><span>
</span><span id="line-345"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-346"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-347"></span><span>    </span><span class="hs-identifier">fTypeRep</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">typeOf1</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">undefined</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">f</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-348"></span><span>    </span><span class="hs-identifier">faTypeRep</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">typeRep</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">Proxy</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Proxy</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">f</span><span> </span><span class="hs-identifier">a</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-cpp">
#endif
</span><span>
</span><span id="line-351"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-352"></span><span class="hs-comment">-- Generic</span><span>
</span><span id="line-353"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-354"></span><span>
</span><span id="line-355"></span><span class="hs-comment">-- | Derive 'structure' genrically.</span><span>
</span><span id="line-356"></span><span class="annot"><a href="Distribution.Utils.Structured.html#genericStructure"><span class="hs-identifier hs-type">genericStructure</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679614438"><span class="annot"><a href="#local-6989586621679614438"><span class="hs-identifier hs-type">a</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614438"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#Generic"><span class="hs-identifier hs-type">Generic</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614438"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructured"><span class="hs-identifier hs-type">GStructured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Generics.html#Rep"><span class="hs-identifier hs-type">Rep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614438"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614438"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span>
</span><span id="line-357"></span><span id="genericStructure"><span class="annot"><span class="annottext">genericStructure :: forall a.
(Typeable a, Generic a, GStructured (Rep a)) =&gt;
Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#genericStructure"><span class="hs-identifier hs-var hs-var">genericStructure</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Proxy (Rep a) -&gt; Word32 -&gt; Structure
forall (f :: * -&gt; *).
GStructured f =&gt;
TypeRep -&gt; Proxy f -&gt; Word32 -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#gstructured"><span class="hs-identifier hs-var">gstructured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy a -&gt; TypeRep
forall {k} (proxy :: k -&gt; *) (a :: k).
Typeable a =&gt;
proxy a -&gt; TypeRep
</span><a href="../../base/src/Data.Typeable.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy a
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614438"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy (Rep a)
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Generics.html#Rep"><span class="hs-identifier hs-type">Rep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614438"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Word32
</span><span class="hs-number">0</span></span><span>
</span><span id="line-358"></span><span>
</span><span id="line-359"></span><span class="hs-comment">-- | Used to implement 'genericStructure'.</span><span>
</span><span id="line-360"></span><span class="hs-keyword">class</span><span> </span><span id="GStructured"><span class="annot"><a href="Distribution.Utils.Structured.html#GStructured"><span class="hs-identifier hs-var">GStructured</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679614372"><span class="annot"><a href="#local-6989586621679614372"><span class="hs-identifier hs-type">f</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Type</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Type</span></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-361"></span><span>    </span><span id="gstructured"><span class="annot"><a href="Distribution.Utils.Structured.html#gstructured"><span class="hs-identifier hs-type">gstructured</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614372"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#TypeVersion"><span class="hs-identifier hs-type">TypeVersion</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span>
</span><span id="line-362"></span><span>
</span><span id="line-363"></span><span id="local-6989586621679614366"><span id="local-6989586621679614367"><span id="local-6989586621679614368"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614368"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">~</span></span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#D"><span class="hs-identifier hs-type">D</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#Datatype"><span class="hs-identifier hs-type">Datatype</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614367"><span class="hs-identifier hs-type">c</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredSum"><span class="hs-identifier hs-type">GStructuredSum</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614366"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructured"><span class="hs-identifier hs-type">GStructured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Generics.html#M1"><span class="hs-identifier hs-type">M1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614368"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614367"><span class="hs-identifier hs-type">c</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614366"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-364"></span><span>    </span><span id="local-6989586621679613365"><span class="annot"><span class="annottext">gstructured :: TypeRep -&gt; Proxy (M1 i c f) -&gt; Word32 -&gt; Structure
</span><a href="#local-6989586621679613365"><span class="hs-identifier hs-var hs-var hs-var hs-var">gstructured</span></a></span></span><span> </span><span id="local-6989586621679613364"><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613364"><span class="hs-identifier hs-var">tr</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy (M1 i c f)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679613363"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613363"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613362"><span class="hs-identifier hs-var">sop</span></a></span><span> </span><span class="hs-keyword">of</span><span class="hs-cpp">
#if MIN_VERSION_base(4,7,0)
</span><span>        </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span id="local-6989586621679613361"><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613361"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">]</span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">M1 i c f () -&gt; Bool
forall {k} (d :: k) k1 (t :: k -&gt; (k1 -&gt; *) -&gt; k1 -&gt; *)
       (f :: k1 -&gt; *) (a :: k1).
Datatype d =&gt;
t d f a -&gt; Bool
</span><a href="../../base/src/GHC.Generics.html#isNewtype"><span class="hs-identifier hs-var">isNewtype</span></a></span><span> </span><span class="annot"><span class="annottext">M1 i c f ()
</span><a href="#local-6989586621679613359"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; Structure -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Newtype"><span class="hs-identifier hs-var">Newtype</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613364"><span class="hs-identifier hs-var">tr</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613363"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613358"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="annot"><span class="annottext">Structure
</span><a href="#local-6989586621679613361"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-cpp">
#endif
</span><span>        </span><span class="annot"><span class="annottext">SopStructure
</span><span class="hs-identifier">_</span></span><span>                        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; SopStructure -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-var">Structure</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep
</span><a href="#local-6989586621679613364"><span class="hs-identifier hs-var">tr</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621679613363"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613358"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613362"><span class="hs-identifier hs-var">sop</span></a></span><span>
</span><span id="line-369"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-370"></span><span>        </span><span id="local-6989586621679613359"><span class="annot"><span class="annottext">p :: M1 i c f ()
</span><a href="#local-6989586621679613359"><span class="hs-identifier hs-var hs-var">p</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">M1 i c f ()
forall a. HasCallStack =&gt; a
</span><a href="../../base/src/GHC.Err.html#undefined"><span class="hs-identifier hs-var">undefined</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#M1"><span class="hs-identifier hs-type">M1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614368"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614367"><span class="hs-identifier hs-type">c</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614366"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-371"></span><span>        </span><span id="local-6989586621679613358"><span class="annot"><span class="annottext">name :: String
</span><a href="#local-6989586621679613358"><span class="hs-identifier hs-var hs-var">name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">M1 i c f () -&gt; String
forall {k} (d :: k) k1 (t :: k -&gt; (k1 -&gt; *) -&gt; k1 -&gt; *)
       (f :: k1 -&gt; *) (a :: k1).
Datatype d =&gt;
t d f a -&gt; String
</span><a href="../../base/src/GHC.Generics.html#datatypeName"><span class="hs-identifier hs-var">datatypeName</span></a></span><span> </span><span class="annot"><span class="annottext">M1 i c f ()
</span><a href="#local-6989586621679613359"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-372"></span><span>        </span><span id="local-6989586621679613362"><span class="annot"><span class="annottext">sop :: SopStructure
</span><a href="#local-6989586621679613362"><span class="hs-identifier hs-var hs-var">sop</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy f -&gt; SopStructure -&gt; SopStructure
forall (f :: * -&gt; *).
GStructuredSum f =&gt;
Proxy f -&gt; SopStructure -&gt; SopStructure
</span><a href="Distribution.Utils.Structured.html#gstructuredSum"><span class="hs-identifier hs-var">gstructuredSum</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy f
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614366"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span></span></span></span><span>
</span><span id="line-373"></span><span>
</span><span id="line-374"></span><span class="hs-keyword">class</span><span> </span><span id="GStructuredSum"><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredSum"><span class="hs-identifier hs-var">GStructuredSum</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679614352"><span class="annot"><a href="#local-6989586621679614352"><span class="hs-identifier hs-type">f</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Type</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Type</span></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-375"></span><span>    </span><span id="gstructuredSum"><span class="annot"><a href="Distribution.Utils.Structured.html#gstructuredSum"><span class="hs-identifier hs-type">gstructuredSum</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614352"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#SopStructure"><span class="hs-identifier hs-type">SopStructure</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#SopStructure"><span class="hs-identifier hs-type">SopStructure</span></a></span><span>
</span><span id="line-376"></span><span>
</span><span id="line-377"></span><span id="local-6989586621679614346"><span id="local-6989586621679614347"><span id="local-6989586621679614348"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614348"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">~</span></span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#C"><span class="hs-identifier hs-type">C</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#Constructor"><span class="hs-identifier hs-type">Constructor</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614347"><span class="hs-identifier hs-type">c</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-type">GStructuredProd</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614346"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredSum"><span class="hs-identifier hs-type">GStructuredSum</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Generics.html#M1"><span class="hs-identifier hs-type">M1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614348"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614347"><span class="hs-identifier hs-type">c</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614346"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-378"></span><span>    </span><span id="local-6989586621679613345"><span class="annot"><span class="annottext">gstructuredSum :: Proxy (M1 i c f) -&gt; SopStructure -&gt; SopStructure
</span><a href="#local-6989586621679613345"><span class="hs-identifier hs-var hs-var hs-var hs-var">gstructuredSum</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy (M1 i c f)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679613344"><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613344"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679613343"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613342"><span class="hs-identifier hs-var">prod</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(String, [Structure]) -&gt; SopStructure -&gt; SopStructure
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613344"><span class="hs-identifier hs-var">xs</span></a></span><span>
</span><span id="line-379"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-380"></span><span>        </span><span id="local-6989586621679613343"><span class="annot"><span class="annottext">name :: String
</span><a href="#local-6989586621679613343"><span class="hs-identifier hs-var hs-var">name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">M1 i c f () -&gt; String
forall {k} (c :: k) k1 (t :: k -&gt; (k1 -&gt; *) -&gt; k1 -&gt; *)
       (f :: k1 -&gt; *) (a :: k1).
Constructor c =&gt;
t c f a -&gt; String
</span><a href="../../base/src/GHC.Generics.html#conName"><span class="hs-identifier hs-var">conName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">M1 i c f ()
forall a. HasCallStack =&gt; a
</span><a href="../../base/src/GHC.Err.html#undefined"><span class="hs-identifier hs-var">undefined</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#M1"><span class="hs-identifier hs-type">M1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614348"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614347"><span class="hs-identifier hs-type">c</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614346"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-381"></span><span>        </span><span id="local-6989586621679613342"><span class="annot"><span class="annottext">prod :: [Structure]
</span><a href="#local-6989586621679613342"><span class="hs-identifier hs-var hs-var">prod</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy f -&gt; [Structure] -&gt; [Structure]
forall (f :: * -&gt; *).
GStructuredProd f =&gt;
Proxy f -&gt; [Structure] -&gt; [Structure]
</span><a href="Distribution.Utils.Structured.html#gstructuredProd"><span class="hs-identifier hs-var">gstructuredProd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy f
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614346"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span></span></span></span><span>
</span><span id="line-382"></span><span>
</span><span id="line-383"></span><span id="local-6989586621679614335"><span id="local-6989586621679614336"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredSum"><span class="hs-identifier hs-type">GStructuredSum</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614336"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredSum"><span class="hs-identifier hs-type">GStructuredSum</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614335"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredSum"><span class="hs-identifier hs-type">GStructuredSum</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614336"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#%3A%2B%3A"><span class="hs-operator hs-type">:+:</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614335"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-384"></span><span>    </span><span id="local-6989586621679613334"><span class="annot"><span class="annottext">gstructuredSum :: Proxy (f :+: g) -&gt; SopStructure -&gt; SopStructure
</span><a href="#local-6989586621679613334"><span class="hs-identifier hs-var hs-var hs-var hs-var">gstructuredSum</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy (f :+: g)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679613333"><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613333"><span class="hs-identifier hs-var">xs</span></a></span></span><span>
</span><span id="line-385"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy f -&gt; SopStructure -&gt; SopStructure
forall (f :: * -&gt; *).
GStructuredSum f =&gt;
Proxy f -&gt; SopStructure -&gt; SopStructure
</span><a href="Distribution.Utils.Structured.html#gstructuredSum"><span class="hs-identifier hs-var">gstructuredSum</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy f
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614336"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-386"></span><span>        </span><span class="annot"><span class="annottext">(SopStructure -&gt; SopStructure) -&gt; SopStructure -&gt; SopStructure
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy g -&gt; SopStructure -&gt; SopStructure
forall (f :: * -&gt; *).
GStructuredSum f =&gt;
Proxy f -&gt; SopStructure -&gt; SopStructure
</span><a href="Distribution.Utils.Structured.html#gstructuredSum"><span class="hs-identifier hs-var">gstructuredSum</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy g
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614335"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SopStructure
</span><a href="#local-6989586621679613333"><span class="hs-identifier hs-var">xs</span></a></span></span></span><span>
</span><span id="line-387"></span><span>
</span><span id="line-388"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredSum"><span class="hs-identifier hs-type">GStructuredSum</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#V1"><span class="hs-identifier hs-type">V1</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-389"></span><span>    </span><span id="local-6989586621679613330"><span class="annot"><span class="annottext">gstructuredSum :: Proxy V1 -&gt; SopStructure -&gt; SopStructure
</span><a href="#local-6989586621679613330"><span class="hs-identifier hs-var hs-var hs-var hs-var">gstructuredSum</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy V1
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SopStructure -&gt; SopStructure
forall a. a -&gt; a
</span><a href="../../base/src/GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-390"></span><span>
</span><span id="line-391"></span><span class="hs-keyword">class</span><span> </span><span id="GStructuredProd"><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-var">GStructuredProd</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679614339"><span class="annot"><a href="#local-6989586621679614339"><span class="hs-identifier hs-type">f</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Type</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Type</span></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-392"></span><span>    </span><span id="gstructuredProd"><span class="annot"><a href="Distribution.Utils.Structured.html#gstructuredProd"><span class="hs-identifier hs-type">gstructuredProd</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614339"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structure"><span class="hs-identifier hs-type">Structure</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-393"></span><span>
</span><span id="line-394"></span><span id="local-6989586621679614328"><span id="local-6989586621679614329"><span id="local-6989586621679614330"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614330"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">~</span></span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#S"><span class="hs-identifier hs-type">S</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-type">GStructuredProd</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614329"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-type">GStructuredProd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Generics.html#M1"><span class="hs-identifier hs-type">M1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614330"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614328"><span class="hs-identifier hs-type">c</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614329"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-395"></span><span>    </span><span id="local-6989586621679613323"><span class="annot"><span class="annottext">gstructuredProd :: Proxy (M1 i c f) -&gt; [Structure] -&gt; [Structure]
</span><a href="#local-6989586621679613323"><span class="hs-identifier hs-var hs-var hs-var hs-var">gstructuredProd</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy (M1 i c f)
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy f -&gt; [Structure] -&gt; [Structure]
forall (f :: * -&gt; *).
GStructuredProd f =&gt;
Proxy f -&gt; [Structure] -&gt; [Structure]
</span><a href="Distribution.Utils.Structured.html#gstructuredProd"><span class="hs-identifier hs-var">gstructuredProd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy f
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614329"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span></span></span></span><span>
</span><span id="line-396"></span><span>
</span><span id="line-397"></span><span id="local-6989586621679614324"><span id="local-6989586621679614325"><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614325"><span class="hs-identifier hs-type">c</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-type">GStructuredProd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Generics.html#K1"><span class="hs-identifier hs-type">K1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614324"><span class="hs-identifier hs-type">i</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614325"><span class="hs-identifier hs-type">c</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-398"></span><span>    </span><span id="local-6989586621679613319"><span class="annot"><span class="annottext">gstructuredProd :: Proxy (K1 i c) -&gt; [Structure] -&gt; [Structure]
</span><a href="#local-6989586621679613319"><span class="hs-identifier hs-var hs-var hs-var hs-var">gstructuredProd</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy (K1 i c)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679613318"><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613318"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy c -&gt; Structure
forall a. Structured a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier hs-var">structure</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy c
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614325"><span class="hs-identifier hs-type">c</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Structure -&gt; [Structure] -&gt; [Structure]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613318"><span class="hs-identifier hs-var">xs</span></a></span></span></span><span>
</span><span id="line-399"></span><span>
</span><span id="line-400"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-type">GStructuredProd</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#U1"><span class="hs-identifier hs-type">U1</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-401"></span><span>    </span><span id="local-6989586621679613316"><span class="annot"><span class="annottext">gstructuredProd :: Proxy U1 -&gt; [Structure] -&gt; [Structure]
</span><a href="#local-6989586621679613316"><span class="hs-identifier hs-var hs-var hs-var hs-var">gstructuredProd</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy U1
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Structure] -&gt; [Structure]
forall a. a -&gt; a
</span><a href="../../base/src/GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-402"></span><span>
</span><span id="line-403"></span><span id="local-6989586621679614320"><span id="local-6989586621679614321"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-type">GStructuredProd</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614321"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-type">GStructuredProd</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614320"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#GStructuredProd"><span class="hs-identifier hs-type">GStructuredProd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614321"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Generics.html#%3A%2A%3A"><span class="hs-operator hs-type">:*:</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614320"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-404"></span><span>    </span><span id="local-6989586621679613310"><span class="annot"><span class="annottext">gstructuredProd :: Proxy (f :*: g) -&gt; [Structure] -&gt; [Structure]
</span><a href="#local-6989586621679613310"><span class="hs-identifier hs-var hs-var hs-var hs-var">gstructuredProd</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy (f :*: g)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679613309"><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613309"><span class="hs-identifier hs-var">xs</span></a></span></span><span>
</span><span id="line-405"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy f -&gt; [Structure] -&gt; [Structure]
forall (f :: * -&gt; *).
GStructuredProd f =&gt;
Proxy f -&gt; [Structure] -&gt; [Structure]
</span><a href="Distribution.Utils.Structured.html#gstructuredProd"><span class="hs-identifier hs-var">gstructuredProd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy f
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614321"><span class="hs-identifier hs-type">f</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-406"></span><span>        </span><span class="annot"><span class="annottext">([Structure] -&gt; [Structure]) -&gt; [Structure] -&gt; [Structure]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy g -&gt; [Structure] -&gt; [Structure]
forall (f :: * -&gt; *).
GStructuredProd f =&gt;
Proxy f -&gt; [Structure] -&gt; [Structure]
</span><a href="Distribution.Utils.Structured.html#gstructuredProd"><span class="hs-identifier hs-var">gstructuredProd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy g
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614320"><span class="hs-identifier hs-type">g</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Structure]
</span><a href="#local-6989586621679613309"><span class="hs-identifier hs-var">xs</span></a></span></span></span><span>
</span><span id="line-407"></span><span>
</span><span id="line-408"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-409"></span><span class="hs-comment">-- instances</span><span>
</span><span id="line-410"></span><span class="hs-comment">-------------------------------------------------------------------------------</span><span>
</span><span id="line-411"></span><span>
</span><span id="line-412"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613303"><span id="local-6989586621679613305"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span></span><span>
</span><span id="line-413"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613296"><span id="local-6989586621679613298"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span></span><span>
</span><span id="line-414"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613290"><span id="local-6989586621679613292"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ordering</span></span></span></span><span>
</span><span id="line-415"></span><span>
</span><span id="line-416"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613285"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Char</span></span></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613283"><span class="annot"><span class="annottext">structure :: Proxy Char -&gt; Structure
</span><a href="#local-6989586621679613283"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Char -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-417"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613278"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span></span><span>     </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613276"><span class="annot"><span class="annottext">structure :: Proxy Int -&gt; Structure
</span><a href="#local-6989586621679613276"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Int -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-418"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613271"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613269"><span class="annot"><span class="annottext">structure :: Proxy Integer -&gt; Structure
</span><a href="#local-6989586621679613269"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Integer -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-419"></span><span>
</span><span id="line-420"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613264"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Data.Word.Word</span></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613262"><span class="annot"><span class="annottext">structure :: Proxy Word -&gt; Structure
</span><a href="#local-6989586621679613262"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Word -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-421"></span><span>
</span><span id="line-422"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613257"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Int.html#Int8"><span class="hs-identifier hs-type">Int8</span></a></span></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613255"><span class="annot"><span class="annottext">structure :: Proxy Int8 -&gt; Structure
</span><a href="#local-6989586621679613255"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Int8 -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-423"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613250"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Int.html#Int16"><span class="hs-identifier hs-type">Int16</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613248"><span class="annot"><span class="annottext">structure :: Proxy Int16 -&gt; Structure
</span><a href="#local-6989586621679613248"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Int16 -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-424"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613243"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Int.html#Int32"><span class="hs-identifier hs-type">Int32</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613241"><span class="annot"><span class="annottext">structure :: Proxy Int32 -&gt; Structure
</span><a href="#local-6989586621679613241"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Int32 -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-425"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613236"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Int.html#Int64"><span class="hs-identifier hs-type">Int64</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613234"><span class="annot"><span class="annottext">structure :: Proxy Int64 -&gt; Structure
</span><a href="#local-6989586621679613234"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Int64 -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-426"></span><span>
</span><span id="line-427"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613229"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word8"><span class="hs-identifier hs-type">Word8</span></a></span></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613227"><span class="annot"><span class="annottext">structure :: Proxy Word8 -&gt; Structure
</span><a href="#local-6989586621679613227"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Word8 -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-428"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613222"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word16"><span class="hs-identifier hs-type">Word16</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613220"><span class="annot"><span class="annottext">structure :: Proxy Word16 -&gt; Structure
</span><a href="#local-6989586621679613220"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Word16 -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-429"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613215"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word32"><span class="hs-identifier hs-type">Word32</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613213"><span class="annot"><span class="annottext">structure :: Proxy Word32 -&gt; Structure
</span><a href="#local-6989586621679613213"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Word32 -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-430"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613208"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word64"><span class="hs-identifier hs-type">Word64</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613206"><span class="annot"><span class="annottext">structure :: Proxy Word64 -&gt; Structure
</span><a href="#local-6989586621679613206"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Word64 -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-431"></span><span>
</span><span id="line-432"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613201"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Float</span></span></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613199"><span class="annot"><span class="annottext">structure :: Proxy Float -&gt; Structure
</span><a href="#local-6989586621679613199"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Float -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-433"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613194"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Double</span></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613192"><span class="annot"><span class="annottext">structure :: Proxy Double -&gt; Structure
</span><a href="#local-6989586621679613192"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Double -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-434"></span><span>
</span><span id="line-435"></span><span id="local-6989586621679614319"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613185"><span id="local-6989586621679613187"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614319"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614319"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span></span><span>
</span><span id="line-436"></span><span id="local-6989586621679614317"><span id="local-6989586621679614318"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613178"><span id="local-6989586621679613180"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614318"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614317"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Either"><span class="hs-identifier hs-type">Either</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614318"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614317"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span></span></span></span></span><span>
</span><span id="line-437"></span><span id="local-6989586621679614316"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613171"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614316"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Real.html#Ratio"><span class="hs-identifier hs-type">Ratio</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614316"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613168"><span class="annot"><span class="annottext">structure :: Proxy (Ratio a) -&gt; Structure
</span><a href="#local-6989586621679613168"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy (Ratio a) -&gt; Structure
forall {k} (f :: * -&gt; k) a.
(Typeable f, Structured a) =&gt;
Proxy (f a) -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier hs-var">containerStructure</span></a></span></span><span>
</span><span id="line-438"></span><span id="local-6989586621679614315"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613162"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614315"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679614315"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613159"><span class="annot"><span class="annottext">structure :: Proxy [a] -&gt; Structure
</span><a href="#local-6989586621679613159"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy [a] -&gt; Structure
forall {k} (f :: * -&gt; k) a.
(Typeable f, Structured a) =&gt;
Proxy (f a) -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier hs-var">containerStructure</span></a></span></span><span>
</span><span id="line-439"></span><span id="local-6989586621679614314"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613153"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614314"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#NonEmpty"><span class="hs-identifier hs-type">NonEmpty</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614314"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613150"><span class="annot"><span class="annottext">structure :: Proxy (NonEmpty a) -&gt; Structure
</span><a href="#local-6989586621679613150"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy (NonEmpty a) -&gt; Structure
forall {k} (f :: * -&gt; k) a.
(Typeable f, Structured a) =&gt;
Proxy (f a) -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier hs-var">containerStructure</span></a></span></span><span>
</span><span id="line-440"></span><span>
</span><span id="line-441"></span><span id="local-6989586621679614312"><span id="local-6989586621679614313"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613143"><span id="local-6989586621679613145"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614313"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614312"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614313"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614312"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">)</span></span></span></span></span><span>
</span><span id="line-442"></span><span id="local-6989586621679614309"><span id="local-6989586621679614310"><span id="local-6989586621679614311"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613135"><span id="local-6989586621679613137"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614311"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614310"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614309"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614311"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614310"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614309"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">)</span></span></span></span></span></span><span>
</span><span id="line-443"></span><span id="local-6989586621679614305"><span id="local-6989586621679614306"><span id="local-6989586621679614307"><span id="local-6989586621679614308"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613126"><span id="local-6989586621679613128"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614308"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614307"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614306"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614305"><span class="hs-identifier hs-type">a4</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614308"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614307"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614306"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614305"><span class="hs-identifier hs-type">a4</span></a></span><span class="hs-special">)</span></span></span></span></span></span></span><span>
</span><span id="line-444"></span><span id="local-6989586621679614300"><span id="local-6989586621679614301"><span id="local-6989586621679614302"><span id="local-6989586621679614303"><span id="local-6989586621679614304"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613116"><span id="local-6989586621679613118"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614304"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614303"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614302"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614301"><span class="hs-identifier hs-type">a4</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614300"><span class="hs-identifier hs-type">a5</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614304"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614303"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614302"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614301"><span class="hs-identifier hs-type">a4</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614300"><span class="hs-identifier hs-type">a5</span></a></span><span class="hs-special">)</span></span></span></span></span></span></span></span><span>
</span><span id="line-445"></span><span id="local-6989586621679614294"><span id="local-6989586621679614295"><span id="local-6989586621679614296"><span id="local-6989586621679614297"><span id="local-6989586621679614298"><span id="local-6989586621679614299"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613105"><span id="local-6989586621679613107"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614299"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614298"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614297"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614296"><span class="hs-identifier hs-type">a4</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614295"><span class="hs-identifier hs-type">a5</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614294"><span class="hs-identifier hs-type">a6</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614299"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614298"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614297"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614296"><span class="hs-identifier hs-type">a4</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614295"><span class="hs-identifier hs-type">a5</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614294"><span class="hs-identifier hs-type">a6</span></a></span><span class="hs-special">)</span></span></span></span></span></span></span></span></span><span>
</span><span id="line-446"></span><span id="local-6989586621679614287"><span id="local-6989586621679614288"><span id="local-6989586621679614289"><span id="local-6989586621679614290"><span id="local-6989586621679614291"><span id="local-6989586621679614292"><span id="local-6989586621679614293"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613093"><span id="local-6989586621679613095"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614293"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614292"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614291"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614290"><span class="hs-identifier hs-type">a4</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614289"><span class="hs-identifier hs-type">a5</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614288"><span class="hs-identifier hs-type">a6</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614287"><span class="hs-identifier hs-type">a7</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679614293"><span class="hs-identifier hs-type">a1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614292"><span class="hs-identifier hs-type">a2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614291"><span class="hs-identifier hs-type">a3</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614290"><span class="hs-identifier hs-type">a4</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614289"><span class="hs-identifier hs-type">a5</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614288"><span class="hs-identifier hs-type">a6</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679614287"><span class="hs-identifier hs-type">a7</span></a></span><span class="hs-special">)</span></span></span></span></span></span></span></span></span></span><span>
</span><span id="line-447"></span><span>
</span><span id="line-448"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613082"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier hs-type">BS.ByteString</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613080"><span class="annot"><span class="annottext">structure :: Proxy ByteString -&gt; Structure
</span><a href="#local-6989586621679613080"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy ByteString -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-449"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613075"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Lazy.Internal.html#ByteString"><span class="hs-identifier hs-type">LBS.ByteString</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613073"><span class="annot"><span class="annottext">structure :: Proxy ByteString -&gt; Structure
</span><a href="#local-6989586621679613073"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy ByteString -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-450"></span><span>
</span><span id="line-451"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613068"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../text/src/Data.Text.Internal.html#Text"><span class="hs-identifier hs-type">T.Text</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613066"><span class="annot"><span class="annottext">structure :: Proxy Text -&gt; Structure
</span><a href="#local-6989586621679613066"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Text -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-452"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613061"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../text/src/Data.Text.Internal.Lazy.html#Text"><span class="hs-identifier hs-type">LT.Text</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613059"><span class="annot"><span class="annottext">structure :: Proxy Text -&gt; Structure
</span><a href="#local-6989586621679613059"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Text -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-453"></span><span>
</span><span id="line-454"></span><span id="local-6989586621679614285"><span id="local-6989586621679614286"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613053"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614286"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614285"><span class="hs-identifier hs-type">v</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614286"><span class="hs-identifier hs-type">k</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614285"><span class="hs-identifier hs-type">v</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613045"><span class="annot"><span class="annottext">structure :: Proxy (Map k v) -&gt; Structure
</span><a href="#local-6989586621679613045"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy (Map k v)
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep -&gt; Word32 -&gt; String -&gt; [Structure] -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy (Map k v) -&gt; TypeRep
forall {k} (proxy :: k -&gt; *) (a :: k).
Typeable a =&gt;
proxy a -&gt; TypeRep
</span><a href="../../base/src/Data.Typeable.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy (Map k v)
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614286"><span class="hs-identifier hs-type">k</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614285"><span class="hs-identifier hs-type">v</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Word32
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Map&quot;</span></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Proxy k -&gt; Structure
forall a. Structured a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier hs-var">structure</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy k
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614286"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Proxy v -&gt; Structure
forall a. Structured a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#structure"><span class="hs-identifier hs-var">structure</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy v
forall {k} (t :: k). Proxy t
</span><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614285"><span class="hs-identifier hs-type">v</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span></span></span><span>
</span><span id="line-455"></span><span id="local-6989586621679614284"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613039"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614284"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Set.Internal.html#Set"><span class="hs-identifier hs-type">Set.Set</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614284"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613036"><span class="annot"><span class="annottext">structure :: Proxy (Set k) -&gt; Structure
</span><a href="#local-6989586621679613036"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy (Set k) -&gt; Structure
forall {k} (f :: * -&gt; k) a.
(Typeable f, Structured a) =&gt;
Proxy (f a) -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier hs-var">containerStructure</span></a></span></span><span>
</span><span id="line-456"></span><span id="local-6989586621679614283"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613030"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614283"><span class="hs-identifier hs-type">v</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.IntMap.Internal.html#IntMap"><span class="hs-identifier hs-type">IM.IntMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614283"><span class="hs-identifier hs-type">v</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613027"><span class="annot"><span class="annottext">structure :: Proxy (IntMap v) -&gt; Structure
</span><a href="#local-6989586621679613027"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy (IntMap v) -&gt; Structure
forall {k} (f :: * -&gt; k) a.
(Typeable f, Structured a) =&gt;
Proxy (f a) -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier hs-var">containerStructure</span></a></span></span><span>
</span><span id="line-457"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613022"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../containers/src/Data.IntSet.Internal.html#IntSet"><span class="hs-identifier hs-type">IS.IntSet</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613020"><span class="annot"><span class="annottext">structure :: Proxy IntSet -&gt; Structure
</span><a href="#local-6989586621679613020"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy IntSet -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-458"></span><span id="local-6989586621679614282"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613014"><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614282"><span class="hs-identifier hs-type">v</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Sequence.Internal.html#Seq"><span class="hs-identifier hs-type">Seq.Seq</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679614282"><span class="hs-identifier hs-type">v</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613011"><span class="annot"><span class="annottext">structure :: Proxy (Seq v) -&gt; Structure
</span><a href="#local-6989586621679613011"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy (Seq v) -&gt; Structure
forall {k} (f :: * -&gt; k) a.
(Typeable f, Structured a) =&gt;
Proxy (f a) -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#containerStructure"><span class="hs-identifier hs-var">containerStructure</span></a></span></span><span>
</span><span id="line-459"></span><span>
</span><span id="line-460"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679613006"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../time/src/Data.Time.Clock.Internal.UTCTime.html#UTCTime"><span class="hs-identifier hs-type">Time.UTCTime</span></a></span></span><span>         </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679613004"><span class="annot"><span class="annottext">structure :: Proxy UTCTime -&gt; Structure
</span><a href="#local-6989586621679613004"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy UTCTime -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-461"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679612999"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../time/src/Data.Time.Clock.Internal.DiffTime.html#DiffTime"><span class="hs-identifier hs-type">Time.DiffTime</span></a></span></span><span>        </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679612997"><span class="annot"><span class="annottext">structure :: Proxy DiffTime -&gt; Structure
</span><a href="#local-6989586621679612997"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy DiffTime -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-462"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679612992"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../time/src/Data.Time.Clock.Internal.UniversalTime.html#UniversalTime"><span class="hs-identifier hs-type">Time.UniversalTime</span></a></span></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679612990"><span class="annot"><span class="annottext">structure :: Proxy UniversalTime -&gt; Structure
</span><a href="#local-6989586621679612990"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy UniversalTime -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-463"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679612985"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../time/src/Data.Time.Clock.Internal.NominalDiffTime.html#NominalDiffTime"><span class="hs-identifier hs-type">Time.NominalDiffTime</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679612983"><span class="annot"><span class="annottext">structure :: Proxy NominalDiffTime -&gt; Structure
</span><a href="#local-6989586621679612983"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy NominalDiffTime -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-464"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679612978"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../time/src/Data.Time.Calendar.Days.html#Day"><span class="hs-identifier hs-type">Time.Day</span></a></span></span><span>             </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679612976"><span class="annot"><span class="annottext">structure :: Proxy Day -&gt; Structure
</span><a href="#local-6989586621679612976"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy Day -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-465"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679612971"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../time/src/Data.Time.LocalTime.Internal.TimeZone.html#TimeZone"><span class="hs-identifier hs-type">Time.TimeZone</span></a></span></span><span>        </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679612969"><span class="annot"><span class="annottext">structure :: Proxy TimeZone -&gt; Structure
</span><a href="#local-6989586621679612969"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy TimeZone -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-466"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679612964"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../time/src/Data.Time.LocalTime.Internal.TimeOfDay.html#TimeOfDay"><span class="hs-identifier hs-type">Time.TimeOfDay</span></a></span></span><span>       </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679612962"><span class="annot"><span class="annottext">structure :: Proxy TimeOfDay -&gt; Structure
</span><a href="#local-6989586621679612962"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy TimeOfDay -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-467"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679612957"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="../../time/src/Data.Time.LocalTime.Internal.LocalTime.html#LocalTime"><span class="hs-identifier hs-type">Time.LocalTime</span></a></span></span><span>       </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679612955"><span class="annot"><span class="annottext">structure :: Proxy LocalTime -&gt; Structure
</span><a href="#local-6989586621679612955"><span class="hs-identifier hs-var hs-var hs-var hs-var">structure</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy LocalTime -&gt; Structure
forall {k} (a :: k). Typeable a =&gt; Proxy a -&gt; Structure
</span><a href="Distribution.Utils.Structured.html#nominalStructure"><span class="hs-identifier hs-var">nominalStructure</span></a></span><span>
</span><span id="line-468"></span><span>
</span><span id="line-469"></span><span class="hs-comment">-- Proxy isn't Typeable in base-4.8 / base</span><span>
</span><span id="line-470"></span><span>
</span><span id="line-471"></span><span class="hs-comment">-- #if __GLASGOW_HASKELL__ &gt;= 800</span><span>
</span><span id="line-472"></span><span class="hs-comment">-- instance (Typeable k, Typeable (a :: k)) =&gt; Structured (Proxy a)</span><span>
</span><span id="line-473"></span><span class="hs-comment">-- #else</span><span>
</span><span id="line-474"></span><span class="hs-comment">-- instance (Typeable a) =&gt; Structured (Proxy a) where</span><span>
</span><span id="line-475"></span><span class="hs-comment">--     structure p = Structure (typeRep p) 0 &quot;Proxy&quot; [(&quot;Proxy&quot;,[])]</span><span>
</span><span id="line-476"></span><span class="hs-comment">-- #endif</span><span>
</span><span id="line-477"></span></pre></body></html>